diff --git a/DEPS b/DEPS
index a79d852a..f65b6c2 100644
--- a/DEPS
+++ b/DEPS
@@ -39,7 +39,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': 'ccce0e02576100e1baaab6b18d91acaff624753e',
+  'skia_revision': '9d55297f1fd1ed0f74277fd95b4c59608220aa77',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
@@ -275,7 +275,7 @@
 
   'src/third_party/catapult':
     Var('chromium_git') + '/external/github.com/catapult-project/catapult.git' + '@' +
-    'a0ffaf72adc7e22c29d120fce2276b147ed30c65',
+    'a4c8174b45bc1bd574307c91467f14f7144c2714',
 
   'src/third_party/openh264/src':
     Var('chromium_git') + '/external/github.com/cisco/openh264' + '@' + 'b37cda248234162033e3e11b0335f3131cdfe488',
diff --git a/chrome/VERSION b/chrome/VERSION
index 2f1a61c..c3c9182 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=50
 MINOR=0
-BUILD=2644
+BUILD=2645
 PATCH=0
diff --git a/chrome/browser/safe_browsing/protocol_manager.h b/chrome/browser/safe_browsing/protocol_manager.h
index 94de1f8..3f21eda 100644
--- a/chrome/browser/safe_browsing/protocol_manager.h
+++ b/chrome/browser/safe_browsing/protocol_manager.h
@@ -149,9 +149,6 @@
     // Gethash attempted during error backoff, no request sent.
     GET_HASH_BACKOFF_ERROR,
 
-    // Gethash attempted before min wait duration elapsed, no request sent.
-    GET_HASH_MIN_WAIT_DURATION_ERROR,
-
     // Memory space for histograms is determined by the max.  ALWAYS
     // ADD NEW VALUES BEFORE THIS ONE.
     GET_HASH_RESULT_MAX
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM
index b3d77e9a..c9ca0db 100644
--- a/chromeos/CHROMEOS_LKGM
+++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@
-7897.0.0
\ No newline at end of file
+7904.0.0
\ No newline at end of file
diff --git a/components/arc/ime/arc_ime_bridge.cc b/components/arc/ime/arc_ime_bridge.cc
index 8d69a47..ec7ba5e4d 100644
--- a/components/arc/ime/arc_ime_bridge.cc
+++ b/components/arc/ime/arc_ime_bridge.cc
@@ -26,6 +26,10 @@
   return window->name() == "ExoSurface";
 }
 
+bool IsArcTopLevelWindow(const aura::Window* window) {
+  return window->name() == "ExoShellSurface";
+}
+
 }  // namespace
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -98,6 +102,13 @@
 
 void ArcImeBridge::OnWindowFocused(aura::Window* gained_focus,
                                    aura::Window* lost_focus) {
+  // The Aura focus may or may not be on sub-window of the toplevel ARC++ frame.
+  // To handle all cases, judge the state by always climbing up to the toplevel.
+  gained_focus = gained_focus ? gained_focus->GetToplevelWindow() : nullptr;
+  lost_focus = lost_focus ? lost_focus->GetToplevelWindow() : nullptr;
+  if (lost_focus == gained_focus)
+    return;
+
   if (lost_focus && focused_arc_window_.Contains(lost_focus)) {
     ui::InputMethod* const input_method = GetInputMethod();
     if (input_method)
@@ -105,7 +116,7 @@
     focused_arc_window_.Remove(lost_focus);
   }
 
-  if (gained_focus && IsArcWindow(gained_focus)) {
+  if (gained_focus && IsArcTopLevelWindow(gained_focus)) {
     focused_arc_window_.Add(gained_focus);
     ui::InputMethod* const input_method = GetInputMethod();
     if (input_method)
diff --git a/content/child/blink_platform_impl.cc b/content/child/blink_platform_impl.cc
index fa8c782..c08802d 100644
--- a/content/child/blink_platform_impl.cc
+++ b/content/child/blink_platform_impl.cc
@@ -108,54 +108,6 @@
   DISALLOW_COPY_AND_ASSIGN(WebWaitableEventImpl);
 };
 
-// A simple class to cache the memory usage for a given amount of time.
-class MemoryUsageCache {
- public:
-  // Retrieves the Singleton.
-  static MemoryUsageCache* GetInstance() {
-    return base::Singleton<MemoryUsageCache>::get();
-  }
-
-  MemoryUsageCache() : memory_value_(0) { Init(); }
-  ~MemoryUsageCache() {}
-
-  void Init() {
-    const unsigned int kCacheSeconds = 1;
-    cache_valid_time_ = base::TimeDelta::FromSeconds(kCacheSeconds);
-  }
-
-  // Returns true if the cached value is fresh.
-  // Returns false if the cached value is stale, or if |cached_value| is NULL.
-  bool IsCachedValueValid(size_t* cached_value) {
-    base::AutoLock scoped_lock(lock_);
-    if (!cached_value)
-      return false;
-    if (base::Time::Now() - last_updated_time_ > cache_valid_time_)
-      return false;
-    *cached_value = memory_value_;
-    return true;
-  };
-
-  // Setter for |memory_value_|, refreshes |last_updated_time_|.
-  void SetMemoryValue(const size_t value) {
-    base::AutoLock scoped_lock(lock_);
-    memory_value_ = value;
-    last_updated_time_ = base::Time::Now();
-  }
-
- private:
-  // The cached memory value.
-  size_t memory_value_;
-
-  // How long the cached value should remain valid.
-  base::TimeDelta cache_valid_time_;
-
-  // The last time the cached value was updated.
-  base::Time last_updated_time_;
-
-  base::Lock lock_;
-};
-
 }  // namespace
 
 static int ToMessageID(WebLocalizedString::Name name) {
@@ -1093,32 +1045,8 @@
   return blink::WebString("");
 }
 
-static size_t getMemoryUsageMB(bool bypass_cache) {
-  size_t current_mem_usage = 0;
-  MemoryUsageCache* mem_usage_cache_singleton = MemoryUsageCache::GetInstance();
-  if (!bypass_cache &&
-      mem_usage_cache_singleton->IsCachedValueValid(&current_mem_usage))
-    return current_mem_usage;
-
-  current_mem_usage = GetMemoryUsageKB() >> 10;
-  mem_usage_cache_singleton->SetMemoryValue(current_mem_usage);
-  return current_mem_usage;
-}
-
-size_t BlinkPlatformImpl::memoryUsageMB() {
-  return getMemoryUsageMB(false);
-}
-
 size_t BlinkPlatformImpl::actualMemoryUsageMB() {
-  return getMemoryUsageMB(true);
-}
-
-size_t BlinkPlatformImpl::physicalMemoryMB() {
-  return static_cast<size_t>(base::SysInfo::AmountOfPhysicalMemoryMB());
-}
-
-size_t BlinkPlatformImpl::virtualMemoryLimitMB() {
-  return static_cast<size_t>(base::SysInfo::AmountOfVirtualMemoryMB());
+  return GetMemoryUsageKB() >> 10;
 }
 
 size_t BlinkPlatformImpl::numberOfProcessors() {
diff --git a/content/child/blink_platform_impl.h b/content/child/blink_platform_impl.h
index af6f000..690fd6e0 100644
--- a/content/child/blink_platform_impl.h
+++ b/content/child/blink_platform_impl.h
@@ -82,10 +82,7 @@
       const blink::WebString& challenge,
       const blink::WebURL& url,
       const blink::WebURL& top_origin) override;
-  size_t memoryUsageMB() override;
   size_t actualMemoryUsageMB() override;
-  size_t physicalMemoryMB() override;
-  size_t virtualMemoryLimitMB() override;
   size_t numberOfProcessors() override;
 
   blink::WebDiscardableMemory* allocateAndLockDiscardableMemory(
diff --git a/mojo/edk/system/broker_host.h b/mojo/edk/system/broker_host.h
index 2029cb0a..b8f68c4d 100644
--- a/mojo/edk/system/broker_host.h
+++ b/mojo/edk/system/broker_host.h
@@ -6,6 +6,7 @@
 #define MOJO_EDK_SYSTEM_BROKER_HOST_H_
 
 #include "base/macros.h"
+#include "base/message_loop/message_loop.h"
 #include "mojo/edk/embedder/scoped_platform_handle.h"
 #include "mojo/edk/system/channel.h"
 
@@ -14,21 +15,26 @@
 
 // The BrokerHost is a channel to the child process, which services synchronous
 // IPCs.
-class BrokerHost : public Channel::Delegate {
+class BrokerHost : public Channel::Delegate,
+                   public base::MessageLoop::DestructionObserver {
  public:
   explicit BrokerHost(ScopedPlatformHandle platform_handle);
-  ~BrokerHost() override;
 
   // Send |handle| to the child, to be used to establish a NodeChannel to us.
   void SendChannel(ScopedPlatformHandle handle);
 
  private:
+  ~BrokerHost() override;
+
   // Channel::Delegate:
   void OnChannelMessage(const void* payload,
                         size_t payload_size,
                         ScopedPlatformHandleVectorPtr handles) override;
   void OnChannelError() override;
 
+  // base::MessageLoop::DestructionObserver:
+  void WillDestroyCurrentMessageLoop() override;
+
   void OnBufferRequest(size_t num_bytes);
 
   scoped_refptr<Channel> channel_;
diff --git a/mojo/edk/system/broker_host_posix.cc b/mojo/edk/system/broker_host_posix.cc
index 7a3ff94..de7cdb82 100644
--- a/mojo/edk/system/broker_host_posix.cc
+++ b/mojo/edk/system/broker_host_posix.cc
@@ -31,12 +31,17 @@
 BrokerHost::BrokerHost(ScopedPlatformHandle platform_handle) {
   CHECK(platform_handle.is_valid());
 
+  base::MessageLoop::current()->AddDestructionObserver(this);
+
   channel_ = Channel::Create(this, std::move(platform_handle),
                              base::MessageLoop::current()->task_runner());
   channel_->Start();
 }
 
 BrokerHost::~BrokerHost() {
+  // We're always destroyed on the creation thread, which is the IO thread.
+  base::MessageLoop::current()->RemoveDestructionObserver(this);
+
   if (channel_)
     channel_->ShutDown();
 }
@@ -98,6 +103,12 @@
     channel_->ShutDown();
     channel_ = nullptr;
   }
+
+  delete this;
+}
+
+void BrokerHost::WillDestroyCurrentMessageLoop() {
+  delete this;
 }
 
 }  // namespace edk
diff --git a/mojo/edk/system/node_controller.cc b/mojo/edk/system/node_controller.cc
index e872b54..b0e7544 100644
--- a/mojo/edk/system/node_controller.cc
+++ b/mojo/edk/system/node_controller.cc
@@ -261,8 +261,9 @@
 
 #if defined(OS_POSIX)
   PlatformChannelPair node_channel;
-  broker_host_.reset(new BrokerHost(std::move(platform_handle)));
-  broker_host_->SendChannel(node_channel.PassClientHandle());
+  // BrokerHost owns itself.
+  BrokerHost* broker_host = new BrokerHost(std::move(platform_handle));
+  broker_host->SendChannel(node_channel.PassClientHandle());
   scoped_refptr<NodeChannel> channel = NodeChannel::Create(
       this, node_channel.PassServerHandle(), io_task_runner_);
 #else
diff --git a/mojo/edk/system/node_controller.h b/mojo/edk/system/node_controller.h
index 2b1012d2..12afeda 100644
--- a/mojo/edk/system/node_controller.h
+++ b/mojo/edk/system/node_controller.h
@@ -29,7 +29,6 @@
 namespace edk {
 
 class Broker;
-class BrokerHost;
 class Core;
 class PortsMessage;
 
@@ -302,9 +301,6 @@
 #if defined(OS_POSIX)
   // Broker for sync shared buffer creation (posix-only) in children.
   scoped_ptr<Broker> broker_;
-
-  // Broker host for sync shared buffer creation (posix-only).
-  scoped_ptr<BrokerHost> broker_host_;
 #endif
 
   DISALLOW_COPY_AND_ASSIGN(NodeController);
diff --git a/testing/libfuzzer/fuzzers/pdfium_fuzzer.cc b/testing/libfuzzer/fuzzers/pdfium_fuzzer.cc
index d3a11f8..537d1c9c 100644
--- a/testing/libfuzzer/fuzzers/pdfium_fuzzer.cc
+++ b/testing/libfuzzer/fuzzers/pdfium_fuzzer.cc
@@ -4,6 +4,7 @@
 
 // This fuzzer is simplified & cleaned up pdfium/samples/pdfium_test.cc
 
+#include <assert.h>
 #include <limits.h>
 #include <stddef.h>
 #include <stdint.h>
diff --git a/third_party/WebKit/LayoutTests/editing/selection/double-click-on-shadow-tree.html b/third_party/WebKit/LayoutTests/editing/selection/double-click-on-shadow-tree.html
index a969dd3..204c26a2 100644
--- a/third_party/WebKit/LayoutTests/editing/selection/double-click-on-shadow-tree.html
+++ b/third_party/WebKit/LayoutTests/editing/selection/double-click-on-shadow-tree.html
@@ -17,12 +17,12 @@
     eventSender.mouseDown();
     eventSender.mouseUp();
 
-    // TODO(yosin) Once Selection API consider about composed tree, we should
+    // TODO(yosin) Once Selection API consider about flat tree, we should
     // use Selection.{anchor,focus}{Node,Offset} to check selection boundary
     // point.
     assert_equals(internals.selectedTextForClipboard(), 'AtwoB');
 
-    // TODO(yosin) Once Selection API supports composed tree, we should change
+    // TODO(yosin) Once Selection API supports flat tree, we should change
     // these values.
     var selection = shadowRoot.getSelection();
     assert_equals(selection.anchorNode(), 'two');
diff --git a/third_party/WebKit/LayoutTests/editing/text-iterator/findString-shadow-roots.html b/third_party/WebKit/LayoutTests/editing/text-iterator/findString-shadow-roots.html
index 8fdbef5..7465d9d 100644
--- a/third_party/WebKit/LayoutTests/editing/text-iterator/findString-shadow-roots.html
+++ b/third_party/WebKit/LayoutTests/editing/text-iterator/findString-shadow-roots.html
@@ -113,7 +113,7 @@
     selection.empty();
     shouldBeTrue('testRunner.findString("AFTER", [])');
     selection.empty();
-    shouldBeTrue('testRunner.findString("BEFOREDOCUMENTAFTER", [])'); // Visited in composed tree order
+    shouldBeTrue('testRunner.findString("BEFOREDOCUMENTAFTER", [])'); // Visited in flat tree order
     selection.empty();
     shouldBeFalse('testRunner.findString("DOCUMENTBEFORE", [])');
     selection.empty();
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/attr-dir-inherit.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/attr-dir-inherit.html
index 3eadc908..091b722 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/attr-dir-inherit.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/attr-dir-inherit.html
@@ -54,7 +54,7 @@
         </template>
     </div>
 
-    <h2>dir=auto determines the first character in the composed tree</h2>
+    <h2>dir=auto determines the first character in the flat tree</h2>
     <div id="dir-auto-english" dir="auto" data-dir-expected="ltr">
         <template>English text</template>
     </div>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/attr-title-inherit.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/attr-title-inherit.html
index 1bf5a70..7726cc0 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/attr-title-inherit.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/attr-title-inherit.html
@@ -31,27 +31,27 @@
 
 host = document.getElementById("distributed");
 createShadowRootWithInnerHtml(host, "<div title='PASS-distributed'><content></content></div>");
-testTooltipTextInShadow("The title of distributed elements inherits in the composed tree", host.querySelector(".target"), "PASS-distributed");
+testTooltipTextInShadow("The title of distributed elements inherits in the flat tree", host.querySelector(".target"), "PASS-distributed");
 
 host = document.getElementById("multiple");
 createShadowRootWithInnerHtml(host, "<div title='NG-multiple'><content></content></div>");
 createShadowRootWithInnerHtml(host, "<div title='PASS-multiple'><content></content></div>");
-testTooltipTextInShadow("The title of distributed elements inherits in the composed tree (multiple shadow roots)", host.querySelector(".target"), "PASS-multiple");
+testTooltipTextInShadow("The title of distributed elements inherits in the flat tree (multiple shadow roots)", host.querySelector(".target"), "PASS-multiple");
 
 host = document.getElementById("multilevel");
 var host2ndLevel = createShadowRootWithInnerHtml(host, "<div title='NG-multilevel'><content></content></div>").firstChild;
 createShadowRootWithInnerHtml(host2ndLevel, "<div title='PASS-multilevel'><content></content></div>");
-testTooltipTextInShadow("The title of distributed elements inherits in the composed tree (multiple levels)", host.querySelector(".target"), "PASS-multilevel");
+testTooltipTextInShadow("The title of distributed elements inherits in the flat tree (multiple levels)", host.querySelector(".target"), "PASS-multilevel");
 
 host = document.getElementById("older");
 root = createShadowRootWithInnerHtml(host, style + "<div class=target>Older</div>");
 createShadowRootWithInnerHtml(host, "<div title='PASS-older'><shadow></shadow></div>");
-testTooltipTextInShadow("The title of elements in older shadow roots inherits in the composed tree", root.querySelector(".target"), "PASS-older");
+testTooltipTextInShadow("The title of elements in older shadow roots inherits in the flat tree", root.querySelector(".target"), "PASS-older");
 
 host = document.getElementById("redistributed");
 createShadowRootWithInnerHtml(host, "<content></content>");
 createShadowRootWithInnerHtml(host, "<div title='PASS-redistributed'><shadow></shadow></div>");
-testTooltipTextInShadow("The title of re-distributed elements inherits in the composed tree (multiple shadow roots)", host.querySelector(".target"), "PASS-redistributed");
+testTooltipTextInShadow("The title of re-distributed elements inherits in the flat tree (multiple shadow roots)", host.querySelector(".target"), "PASS-redistributed");
 
 function testTooltipTextInShadow(description, element, expected) {
     if (!window.eventSender || !window.testRunner)
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/distribution-update-fonts-load.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/distribution-update-fonts-load.html
index 7cddf59..1c90f62d 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/distribution-update-fonts-load.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/distribution-update-fonts-load.html
@@ -3,7 +3,7 @@
 <script src="../../../resources/testharnessreport.js"></script>
 <div id="container">
     <p>This test crashes if ASSERT is enabled and
-        the shadow DOM distribution is not properly updated before composed tree traversals.
+        the shadow DOM distribution is not properly updated before flat tree traversals.
 </div>
 <script>
 setup({ explicit_done: true });
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/focus-navigation.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/focus-navigation.html
index c0c27236d0..b82b1c0 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/focus-navigation.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/focus-navigation.html
@@ -98,7 +98,7 @@
         // Exits the focus scope of the youngest sahdow root.
         'light-child-selected-1',
 
-        // 'light-child-non-selected-1' should be skipped since it doesn't participate in the composed tree.
+        // 'light-child-non-selected-1' should be skipped since it doesn't participate in the flat tree.
         'input-D-1',
 
         // All elements with tabindex=1 had been traversed in the outermost scope.
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/getComputedStyle-composed-parent-dirty-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/shadow/getComputedStyle-composed-parent-dirty-expected.txt
index 759e08b..c3f7dea 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/getComputedStyle-composed-parent-dirty-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/getComputedStyle-composed-parent-dirty-expected.txt
@@ -1,4 +1,4 @@
-getComputedStyle should update style if the parent node in the composed tree needs a recalc.
+getComputedStyle should update style if the parent node in the flat tree needs a recalc.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/getComputedStyle-composed-parent-dirty.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/getComputedStyle-composed-parent-dirty.html
index ca17cc6..40c6fe1 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/getComputedStyle-composed-parent-dirty.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/getComputedStyle-composed-parent-dirty.html
@@ -7,7 +7,7 @@
 </div>
 
 <script>
-description("getComputedStyle should update style if the parent node in the composed tree needs a recalc.");
+description("getComputedStyle should update style if the parent node in the flat tree needs a recalc.");
 
 var root = document.getElementById("host").createShadowRoot();
 var wrapper = root.appendChild(document.createElement("div"));
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/hostcontext-pseudo-class-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/shadow/hostcontext-pseudo-class-expected.txt
index 0e9ed2fa..1e6e118 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/hostcontext-pseudo-class-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/hostcontext-pseudo-class-expected.txt
@@ -27,9 +27,9 @@
 :host-context matches a shadow host in just a nested shadow tree, not all enclosing shadow trees.
 PASS backgroundColorOf('host1') is "rgba(0, 0, 0, 0)"
 PASS backgroundColorOf('host1/host2') is "rgb(0, 128, 0)"
-:host-context matches based on a composed tree.
+:host-context matches based on a flat tree.
 PASS backgroundColorOf('host/target') is "rgb(0, 128, 0)"
-:host-context matches based on a composed tree when having multiple shadow roots.
+:host-context matches based on a flat tree when having multiple shadow roots.
 PASS backgroundColorOf('host/targetA') is "rgba(0, 0, 0, 0)"
 PASS backgroundColorOf('host/targetB') is "rgb(0, 128, 0)"
 PASS backgroundColorOf('host/targetC') is "rgb(0, 128, 0)"
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/hostcontext-pseudo-class.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/hostcontext-pseudo-class.html
index 80eb210030..195dc921 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/hostcontext-pseudo-class.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/hostcontext-pseudo-class.html
@@ -177,7 +177,7 @@
 backgroundColorShouldBe('host1', 'rgba(0, 0, 0, 0)');
 backgroundColorShouldBe('host1/host2', 'rgb(0, 128, 0)');
 
-debug(':host-context matches based on a composed tree.');
+debug(':host-context matches based on a flat tree.');
 
 sandbox.appendChild(
     createDOM('div', {'id': 'parentOfHost'},
@@ -195,7 +195,7 @@
 
 cleanUp();
 
-debug(':host-context matches based on a composed tree when having multiple shadow roots.');
+debug(':host-context matches based on a flat tree when having multiple shadow roots.');
 
 sandbox.appendChild(
     createDOM('div', {'id': 'parentOfHost'},
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/node-distribution-recalc-crash.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/node-distribution-recalc-crash.html
new file mode 100644
index 0000000..70e1d83f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/node-distribution-recalc-crash.html
@@ -0,0 +1,12 @@
+<script src="../../../resources/testharness.js"></script>
+<script src="../../../resources/testharnessreport.js"></script>
+<body id=b></body>
+<script>
+test(function() {
+    // Mark needsDistributionRecalc with UA shadow.
+    b.appendChild(document.createElement('input'));
+    var canvas = document.createElement('canvas');
+    b.appendChild(canvas);
+    canvas.getContext("webgl");
+}, "Reproduction case for crbug.com/569196 (assertion hit in ComposedTreeTraversal::parent())");
+</script>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/event-dispatching.js b/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/event-dispatching.js
index 98ed4fd6..17b714ed 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/event-dispatching.js
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/event-dispatching.js
@@ -121,7 +121,7 @@
     indent = indent || "";
     var output = indent + dumpNode(node) + "\n";
     var child;
-    for (child = internals.firstChildInComposedTree(node); child; child = internals.nextSiblingInComposedTree(child))
+    for (child = internals.firstChildInFlatTree(node); child; child = internals.nextSiblingInFlatTree(child))
          output += dumpComposedShadowTree(child, indent + "\t");
     return output;
 }
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/shadow-dom.js b/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/shadow-dom.js
index ab9c30b..927d050a 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/shadow-dom.js
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/shadow-dom.js
@@ -256,39 +256,39 @@
     indent = indent || "";
     var output = indent + dumpNode(node) + "\n";
     var child;
-    for (child = internals.firstChildInComposedTree(node); child; child = internals.nextSiblingInComposedTree(child))
+    for (child = internals.firstChildInFlatTree(node); child; child = internals.nextSiblingInFlatTree(child))
          output += dumpComposedShadowTree(child, indent + "\t");
     return output;
 }
 
-function lastNodeInComposedTree(root)
+function lastNodeInFlatTree(root)
 {
     var lastNode = root;
-    while (internals.lastChildInComposedTree(lastNode))
-        lastNode = internals.lastChildInComposedTree(lastNode);
+    while (internals.lastChildInFlatTree(lastNode))
+        lastNode = internals.lastChildInFlatTree(lastNode);
     return lastNode;
 }
 
 function showComposedShadowTreeByTraversingInForward(root)
 {
     var node = root;
-    var last = lastNodeInComposedTree(root);
+    var last = lastNodeInFlatTree(root);
     while (node) {
         debug(dumpNode(node));
         if (node == last)
             break;
-        node = internals.nextInComposedTree(node);
+        node = internals.nextInFlatTree(node);
     }
 }
 
 function showComposedShadowTreeByTraversingInBackward(root)
 {
-    var node = lastNodeInComposedTree(root);
+    var node = lastNodeInFlatTree(root);
     while (node) {
         debug(dumpNode(node));
         if (node == root)
             break;
-        node = internals.previousInComposedTree(node);
+        node = internals.previousInFlatTree(node);
     }
 }
 
@@ -308,7 +308,7 @@
 
 function showNextNode(node)
 {
-    var next = internals.nextInComposedTree(node);
+    var next = internals.nextInFlatTree(node);
     debug('Next node of [' + dumpNode(node) + '] is [' + dumpNode(next) + ']');
 }
 
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/style-with-deep-combinator.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/style-with-deep-combinator.html
index 0e5da24..eb41ef14 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/style-with-deep-combinator.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/style-with-deep-combinator.html
@@ -342,7 +342,7 @@
 
 cleanUp();
 
-// :host /deep/ span is declared in a shadow tree, but the shadow root does not participate in composed tree.
+// :host /deep/ span is declared in a shadow tree, but the shadow root does not participate in flat tree.
 
 sandbox.appendChild(
     createDOM('div', {'id': 'host'},
diff --git a/third_party/WebKit/LayoutTests/platform/android/fast/forms/search/searchfield-heights-expected.txt b/third_party/WebKit/LayoutTests/platform/android/fast/forms/search/searchfield-heights-expected.txt
new file mode 100644
index 0000000..3a58e85
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/android/fast/forms/search/searchfield-heights-expected.txt
@@ -0,0 +1,43 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutText {#text} at (0,0) size 351x19
+        text run at (0,0) width 351: "This tests that aqua-style search fields do not honor height."
+      LayoutBR {BR} at (351,15) size 0x0
+      LayoutTextControl {INPUT} at (0,124) size 79x6 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutFlexibleBox {DIV} at (3,0) size 73x6
+          LayoutBlockFlow {DIV} at (2,0) size 9x9
+          LayoutBlockFlow {DIV} at (14,0) size 50x6
+      LayoutText {#text} at (79,114) size 4x19
+        text run at (79,114) width 4: " "
+      LayoutTextControl {INPUT} at (83,104) size 179x40 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutFlexibleBox {DIV} at (3,3) size 173x34
+          LayoutBlockFlow {DIV} at (2,9.50) size 15x15
+          LayoutBlockFlow {DIV} at (20,8.50) size 139x17
+      LayoutText {#text} at (262,114) size 4x19
+        text run at (262,114) width 4: " "
+      LayoutTextControl {INPUT} at (266,20) size 307x200 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutFlexibleBox {DIV} at (3,3) size 301x194
+          LayoutBlockFlow {DIV} at (2,83.50) size 27x27
+          LayoutBlockFlow {DIV} at (32,80.50) size 246x33
+      LayoutText {#text} at (0,0) size 0x0
+layer at (25,132) size 50x6
+  LayoutBlockFlow {DIV} at (0,0) size 50x6
+    LayoutText {#text} at (0,0) size 10x6
+      text run at (0,0) width 10: "mini"
+layer at (114,124) size 139x17
+  LayoutBlockFlow {DIV} at (0,0) size 139x17
+    LayoutText {#text} at (0,0) size 35x17
+      text run at (0,0) width 35: "small"
+layer at (309,112) size 246x33
+  LayoutBlockFlow {DIV} at (0,0) size 246x33
+    LayoutText {#text} at (0,0) size 84x32
+      text run at (0,0) width 84: "regular"
+layer at (76,133) size 5x5 transparent
+  LayoutBlockFlow {DIV} at (65,0.50) size 5x5
+layer at (254,127) size 10x10 transparent
+  LayoutBlockFlow {DIV} at (160,12) size 10x10
+layer at (556,119) size 19x19 transparent
+  LayoutBlockFlow {DIV} at (279,87.50) size 19x19
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/search/search-vertical-alignment-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/search/search-vertical-alignment-expected.txt
index fdabc71..6185b27 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/search/search-vertical-alignment-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/search/search-vertical-alignment-expected.txt
@@ -12,9 +12,9 @@
           text run at (364,20) width 115: "same in both fields."
       LayoutBlockFlow {P} at (0,56) size 784x45
         LayoutTextControl {INPUT} at (0,0) size 156x45 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 150x39
-            LayoutBlockFlow {DIV} at (2,13) size 13x13
-            LayoutBlockFlow {DIV} at (18,11.50) size 119x16
+          LayoutFlexibleBox {DIV} at (3,14.50) size 150x16
+            LayoutBlockFlow {DIV} at (2,1.50) size 13x13
+            LayoutBlockFlow {DIV} at (18,0) size 119x16
         LayoutText {#text} at (156,12) size 4x19
           text run at (156,12) width 4: " "
         LayoutTextControl {INPUT} at (160,0) size 154x45 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
@@ -30,9 +30,9 @@
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {P} at (0,153) size 784x20
         LayoutTextControl {INPUT} at (0,4) size 156x12 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,0) size 150x12
-            LayoutBlockFlow {DIV} at (2,0) size 13x13
-            LayoutBlockFlow {DIV} at (18,-2) size 119x16
+          LayoutFlexibleBox {DIV} at (3,-2) size 150x16
+            LayoutBlockFlow {DIV} at (2,1.50) size 13x13
+            LayoutBlockFlow {DIV} at (18,0) size 119x16
         LayoutText {#text} at (156,0) size 4x19
           text run at (156,0) width 4: " "
         LayoutTextControl {INPUT} at (160,4) size 154x12 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
@@ -62,8 +62,8 @@
     LayoutText {#text} at (0,0) size 24x16
       text run at (0,0) width 24: "Text"
 layer at (149,82) size 9x9 transparent
-  LayoutBlockFlow {DIV} at (138,15) size 9x9
+  LayoutBlockFlow {DIV} at (138,3.50) size 9x9
 layer at (149,131) size 9x9 transparent
   LayoutBlockFlow {DIV} at (138,3.50) size 9x9
 layer at (149,167) size 9x9 transparent
-  LayoutBlockFlow {DIV} at (138,1.50) size 9x9
+  LayoutBlockFlow {DIV} at (138,3.50) size 9x9
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/search/searchfield-heights-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/search/searchfield-heights-expected.png
index 89c84f3e..a956399 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/search/searchfield-heights-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/search/searchfield-heights-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/search/searchfield-heights-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/search/searchfield-heights-expected.txt
index 3a58e85..b47a3f35 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/search/searchfield-heights-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/search/searchfield-heights-expected.txt
@@ -6,24 +6,24 @@
       LayoutText {#text} at (0,0) size 351x19
         text run at (0,0) width 351: "This tests that aqua-style search fields do not honor height."
       LayoutBR {BR} at (351,15) size 0x0
-      LayoutTextControl {INPUT} at (0,124) size 79x6 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutFlexibleBox {DIV} at (3,0) size 73x6
+      LayoutTextControl {INPUT} at (0,125) size 79x6 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutFlexibleBox {DIV} at (3,-1.50) size 73x9
           LayoutBlockFlow {DIV} at (2,0) size 9x9
-          LayoutBlockFlow {DIV} at (14,0) size 50x6
+          LayoutBlockFlow {DIV} at (14,1.50) size 50x6
       LayoutText {#text} at (79,114) size 4x19
         text run at (79,114) width 4: " "
       LayoutTextControl {INPUT} at (83,104) size 179x40 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutFlexibleBox {DIV} at (3,3) size 173x34
-          LayoutBlockFlow {DIV} at (2,9.50) size 15x15
-          LayoutBlockFlow {DIV} at (20,8.50) size 139x17
+        LayoutFlexibleBox {DIV} at (3,11.50) size 173x17
+          LayoutBlockFlow {DIV} at (2,1) size 15x15
+          LayoutBlockFlow {DIV} at (20,0) size 139x17
       LayoutText {#text} at (262,114) size 4x19
         text run at (262,114) width 4: " "
       LayoutTextControl {INPUT} at (266,20) size 307x200 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutFlexibleBox {DIV} at (3,3) size 301x194
-          LayoutBlockFlow {DIV} at (2,83.50) size 27x27
-          LayoutBlockFlow {DIV} at (32,80.50) size 246x33
+        LayoutFlexibleBox {DIV} at (3,83.50) size 301x33
+          LayoutBlockFlow {DIV} at (2,3) size 27x27
+          LayoutBlockFlow {DIV} at (32,0) size 246x33
       LayoutText {#text} at (0,0) size 0x0
-layer at (25,132) size 50x6
+layer at (25,133) size 50x6
   LayoutBlockFlow {DIV} at (0,0) size 50x6
     LayoutText {#text} at (0,0) size 10x6
       text run at (0,0) width 10: "mini"
@@ -35,9 +35,9 @@
   LayoutBlockFlow {DIV} at (0,0) size 246x33
     LayoutText {#text} at (0,0) size 84x32
       text run at (0,0) width 84: "regular"
-layer at (76,133) size 5x5 transparent
-  LayoutBlockFlow {DIV} at (65,0.50) size 5x5
+layer at (76,134) size 5x5 transparent
+  LayoutBlockFlow {DIV} at (65,2) size 5x5
 layer at (254,127) size 10x10 transparent
-  LayoutBlockFlow {DIV} at (160,12) size 10x10
+  LayoutBlockFlow {DIV} at (160,3.50) size 10x10
 layer at (556,119) size 19x19 transparent
-  LayoutBlockFlow {DIV} at (279,87.50) size 19x19
+  LayoutBlockFlow {DIV} at (279,7) size 19x19
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/forms/number/number-appearance-datalist-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/forms/number/number-appearance-datalist-expected.txt
index 6e17f75..315908e 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/forms/number/number-appearance-datalist-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/forms/number/number-appearance-datalist-expected.txt
@@ -4,28 +4,28 @@
   LayoutBlockFlow {HTML} at (0,0) size 800x54
     LayoutBlockFlow {BODY} at (8,8) size 784x38
       LayoutTextControl {INPUT} at (0,0) size 123x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutFlexibleBox {DIV} at (3,3) size 117x13
-          LayoutBlockFlow {DIV} at (0,0) size 89.28x13
-          LayoutDetailsMarker {DIV} at (89.28,1.02) size 14.72x10.97: down
-          LayoutBlockFlow {DIV} at (104,-1) size 13x15
+        LayoutFlexibleBox {DIV} at (3,2) size 117x15
+          LayoutBlockFlow {DIV} at (0,1) size 89.28x13
+          LayoutDetailsMarker {DIV} at (89.28,2.02) size 14.72x10.97: down
+          LayoutBlockFlow {DIV} at (104,0) size 13x15
       LayoutText {#text} at (123,0) size 4x18
         text run at (123,0) width 4: " "
       LayoutTextControl {INPUT} at (127,0) size 123x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutFlexibleBox {DIV} at (3,3) size 117x13
-          LayoutBlockFlow {DIV} at (0,0) size 89.28x13
-          LayoutDetailsMarker {DIV} at (89.28,1.02) size 14.72x10.97: down
-          LayoutBlockFlow {DIV} at (104,-1) size 13x15
+        LayoutFlexibleBox {DIV} at (3,2) size 117x15
+          LayoutBlockFlow {DIV} at (0,1) size 89.28x13
+          LayoutDetailsMarker {DIV} at (89.28,2.02) size 14.72x10.97: down
+          LayoutBlockFlow {DIV} at (104,0) size 13x15
       LayoutText {#text} at (250,0) size 4x18
         text run at (250,0) width 4: " "
       LayoutBR {BR} at (254,0) size 0x18
       LayoutTextControl {INPUT} at (0,19) size 123x19 [color=#545454] [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutFlexibleBox {DIV} at (3,3) size 117x13
-          LayoutBlockFlow {DIV} at (0,0) size 89.28x13
+        LayoutFlexibleBox {DIV} at (3,2) size 117x15
+          LayoutBlockFlow {DIV} at (0,1) size 89.28x13
       LayoutText {#text} at (123,19) size 4x18
         text run at (123,19) width 4: " "
       LayoutTextControl {INPUT} at (127,19) size 123x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutFlexibleBox {DIV} at (3,3) size 117x13
-          LayoutBlockFlow {DIV} at (0,0) size 89.28x13
+        LayoutFlexibleBox {DIV} at (3,2) size 117x15
+          LayoutBlockFlow {DIV} at (0,1) size 89.28x13
       LayoutText {#text} at (0,0) size 0x0
       LayoutText {#text} at (0,0) size 0x0
 layer at (11,11) size 89x13
@@ -37,11 +37,11 @@
 layer at (138,30) size 89x13
   LayoutBlockFlow {DIV} at (0,0) size 89.28x13
 hidden layer at (100,31) size 15x11 transparent
-  LayoutDetailsMarker {DIV} at (89.28,1.02) size 14.72x10.97: down
+  LayoutDetailsMarker {DIV} at (89.28,2.02) size 14.72x10.97: down
 layer at (115,29) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (104,-1) size 13x15
+  LayoutBlockFlow {DIV} at (104,0) size 13x15
 hidden layer at (227,31) size 15x11 transparent
-  LayoutDetailsMarker {DIV} at (89.28,1.02) size 14.72x10.97: down
+  LayoutDetailsMarker {DIV} at (89.28,2.02) size 14.72x10.97: down
 layer at (242,29) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (104,-1) size 13x15
+  LayoutBlockFlow {DIV} at (104,0) size 13x15
 caret: position 0 of child 0 {DIV} of child 0 {DIV} of child 0 {DIV} of {#document-fragment} of child 3 {INPUT} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/forms/number/number-appearance-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/forms/number/number-appearance-rtl-expected.txt
index fced8b9..f7cb3c1 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/forms/number/number-appearance-rtl-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/forms/number/number-appearance-rtl-expected.txt
@@ -5,46 +5,46 @@
     LayoutBlockFlow {BODY} at (8,16) size 784x264
       LayoutBlockFlow {P} at (0,0) size 784x19
         LayoutTextControl {INPUT} at (661,0) size 123x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 117x13
-            LayoutBlockFlow {DIV} at (13,0) size 104x13
+          LayoutFlexibleBox {DIV} at (3,2) size 117x15
+            LayoutBlockFlow {DIV} at (13,1) size 104x13
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {P} at (0,35) size 784x19
         LayoutTextControl {INPUT} at (661,0) size 123x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 117x13
-            LayoutBlockFlow {DIV} at (13,0) size 104x13
+          LayoutFlexibleBox {DIV} at (3,2) size 117x15
+            LayoutBlockFlow {DIV} at (13,1) size 104x13
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {P} at (0,70) size 784x19
         LayoutTextControl {INPUT} at (0,0) size 123x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 117x13
-            LayoutBlockFlow {DIV} at (13,0) size 104x13
+          LayoutFlexibleBox {DIV} at (3,2) size 117x15
+            LayoutBlockFlow {DIV} at (13,1) size 104x13
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {P} at (0,105) size 784x19
         LayoutTextControl {INPUT} at (0,0) size 123x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 117x13
-            LayoutBlockFlow {DIV} at (13,0) size 104x13
-            LayoutBlockFlow {DIV} at (0,-1) size 13x15
+          LayoutFlexibleBox {DIV} at (3,2) size 117x15
+            LayoutBlockFlow {DIV} at (13,1) size 104x13
+            LayoutBlockFlow {DIV} at (0,0) size 13x15
         LayoutText {#text} at (0,0) size 0x0
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {P} at (0,140) size 784x19
         LayoutTextControl {INPUT} at (0,0) size 123x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 117x13
-            LayoutBlockFlow {DIV} at (0,0) size 104x13
+          LayoutFlexibleBox {DIV} at (3,2) size 117x15
+            LayoutBlockFlow {DIV} at (0,1) size 104x13
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {P} at (0,175) size 784x19
         LayoutTextControl {INPUT} at (0,0) size 123x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 117x13
-            LayoutBlockFlow {DIV} at (0,0) size 104x13
+          LayoutFlexibleBox {DIV} at (3,2) size 117x15
+            LayoutBlockFlow {DIV} at (0,1) size 104x13
         LayoutText {#text} at (0,0) size 0x0
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {P} at (0,210) size 784x19
         LayoutTextControl {INPUT} at (0,0) size 123x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 117x13
-            LayoutBlockFlow {DIV} at (13,0) size 104x13
+          LayoutFlexibleBox {DIV} at (3,2) size 117x15
+            LayoutBlockFlow {DIV} at (13,1) size 104x13
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {P} at (0,245) size 784x19
         LayoutTextControl {INPUT} at (0,0) size 123x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 117x13
-            LayoutBlockFlow {DIV} at (13,0) size 104x13
+          LayoutFlexibleBox {DIV} at (3,2) size 117x15
+            LayoutBlockFlow {DIV} at (13,1) size 104x13
         LayoutText {#text} at (0,0) size 0x0
         LayoutText {#text} at (0,0) size 0x0
 layer at (685,19) size 104x13
@@ -80,17 +80,17 @@
     LayoutText {#text} at (97,0) size 7x13
       text run at (97,0) width 7: "8"
 layer at (672,18) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (0,-1) size 13x15
+  LayoutBlockFlow {DIV} at (0,0) size 13x15
 layer at (672,53) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (0,-1) size 13x15
+  LayoutBlockFlow {DIV} at (0,0) size 13x15
 layer at (11,88) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (0,-1) size 13x15
+  LayoutBlockFlow {DIV} at (0,0) size 13x15
 layer at (115,158) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (104,-1) size 13x15
+  LayoutBlockFlow {DIV} at (104,0) size 13x15
 layer at (115,193) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (104,-1) size 13x15
+  LayoutBlockFlow {DIV} at (104,0) size 13x15
 layer at (11,228) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (0,-1) size 13x15
+  LayoutBlockFlow {DIV} at (0,0) size 13x15
 layer at (11,263) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (0,-1) size 13x15
+  LayoutBlockFlow {DIV} at (0,0) size 13x15
 caret: position 4 of child 0 {#text} of child 0 {DIV} of child 0 {DIV} of child 0 {DIV} of {#document-fragment} of child 0 {INPUT} of child 6 {P} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/forms/number/number-appearance-spinbutton-layer-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/forms/number/number-appearance-spinbutton-layer-expected.txt
index f9927661..a24252b 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/forms/number/number-appearance-spinbutton-layer-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/forms/number/number-appearance-spinbutton-layer-expected.txt
@@ -5,8 +5,8 @@
     LayoutBlockFlow {BODY} at (8,8) size 784x38
       LayoutBR {BR} at (123,0) size 0x18
       LayoutTextControl {INPUT} at (0,19) size 123x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutFlexibleBox {DIV} at (3,3) size 117x13
-          LayoutBlockFlow {DIV} at (0,0) size 104x13
+        LayoutFlexibleBox {DIV} at (3,2) size 117x15
+          LayoutBlockFlow {DIV} at (0,1) size 104x13
       LayoutText {#text} at (0,0) size 0x0
 layer at (11,30) size 104x13
   LayoutBlockFlow {DIV} at (0,0) size 104x13
@@ -14,13 +14,13 @@
       text run at (0,0) width 14: "10"
 layer at (8,8) size 123x19 transparent
   LayoutTextControl {INPUT} at (0,0) size 123x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-    LayoutFlexibleBox {DIV} at (3,3) size 117x13
-      LayoutBlockFlow {DIV} at (0,0) size 104x13
+    LayoutFlexibleBox {DIV} at (3,2) size 117x15
+      LayoutBlockFlow {DIV} at (0,1) size 104x13
 layer at (11,11) size 104x13
   LayoutBlockFlow {DIV} at (0,0) size 104x13
     LayoutText {#text} at (0,0) size 14x13
       text run at (0,0) width 14: "10"
 layer at (115,10) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (104,-1) size 13x15
+  LayoutBlockFlow {DIV} at (104,0) size 13x15
 layer at (115,29) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (104,-1) size 13x15
+  LayoutBlockFlow {DIV} at (104,0) size 13x15
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/forms/search/search-vertical-alignment-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/forms/search/search-vertical-alignment-expected.txt
index 2db64ad..b33c563 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/forms/search/search-vertical-alignment-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mavericks/fast/forms/search/search-vertical-alignment-expected.txt
@@ -12,9 +12,9 @@
           text run at (469,18) width 125: "same in both fields."
       LayoutBlockFlow {P} at (0,52) size 784x45
         LayoutTextControl {INPUT} at (0,0) size 123x45 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 117x39
-            LayoutBlockFlow {DIV} at (0,13) size 16x13
-            LayoutBlockFlow {DIV} at (16,13) size 89x13
+          LayoutFlexibleBox {DIV} at (3,16) size 117x13
+            LayoutBlockFlow {DIV} at (0,0) size 16x13
+            LayoutBlockFlow {DIV} at (16,0) size 89x13
         LayoutText {#text} at (123,13) size 4x18
           text run at (123,13) width 4: " "
         LayoutTextControl {INPUT} at (127,0) size 123x45 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
@@ -30,9 +30,9 @@
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {P} at (0,147) size 784x18
         LayoutTextControl {INPUT} at (0,4) size 123x12 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,0) size 117x12
+          LayoutFlexibleBox {DIV} at (3,-0.50) size 117x13
             LayoutBlockFlow {DIV} at (0,0) size 16x13
-            LayoutBlockFlow {DIV} at (16,-0.50) size 89x13
+            LayoutBlockFlow {DIV} at (16,0) size 89x13
         LayoutText {#text} at (123,0) size 4x18
           text run at (123,0) width 4: " "
         LayoutTextControl {INPUT} at (127,4) size 123x12 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
@@ -62,8 +62,8 @@
     LayoutText {#text} at (0,0) size 24x13
       text run at (0,0) width 24: "Text"
 layer at (117,77) size 11x11 transparent
-  LayoutBlockFlow {DIV} at (106,14) size 11x11
+  LayoutBlockFlow {DIV} at (106,1) size 11x11
 layer at (117,126) size 11x11 transparent
   LayoutBlockFlow {DIV} at (106,1) size 11x11
 layer at (117,160) size 11x11 transparent
-  LayoutBlockFlow {DIV} at (106,0.50) size 11x11
+  LayoutBlockFlow {DIV} at (106,1) size 11x11
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/number/number-appearance-datalist-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/number/number-appearance-datalist-expected.txt
index f254194..c52d3f81 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/number/number-appearance-datalist-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/number/number-appearance-datalist-expected.txt
@@ -4,28 +4,28 @@
   LayoutBlockFlow {HTML} at (0,0) size 800x54
     LayoutBlockFlow {BODY} at (8,8) size 784x38
       LayoutTextControl {INPUT} at (0,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutFlexibleBox {DIV} at (3,3) size 125x13
-          LayoutBlockFlow {DIV} at (0,0) size 97.28x13
-          LayoutDetailsMarker {DIV} at (97.28,1.02) size 14.72x10.97: down
-          LayoutBlockFlow {DIV} at (112,-1) size 13x15
+        LayoutFlexibleBox {DIV} at (3,2) size 125x15
+          LayoutBlockFlow {DIV} at (0,1) size 97.28x13
+          LayoutDetailsMarker {DIV} at (97.28,2.02) size 14.72x10.97: down
+          LayoutBlockFlow {DIV} at (112,0) size 13x15
       LayoutText {#text} at (131,0) size 4x18
         text run at (131,0) width 4: " "
       LayoutTextControl {INPUT} at (135,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutFlexibleBox {DIV} at (3,3) size 125x13
-          LayoutBlockFlow {DIV} at (0,0) size 97.28x13
-          LayoutDetailsMarker {DIV} at (97.28,1.02) size 14.72x10.97: down
-          LayoutBlockFlow {DIV} at (112,-1) size 13x15
+        LayoutFlexibleBox {DIV} at (3,2) size 125x15
+          LayoutBlockFlow {DIV} at (0,1) size 97.28x13
+          LayoutDetailsMarker {DIV} at (97.28,2.02) size 14.72x10.97: down
+          LayoutBlockFlow {DIV} at (112,0) size 13x15
       LayoutText {#text} at (266,0) size 4x18
         text run at (266,0) width 4: " "
       LayoutBR {BR} at (270,0) size 0x18
       LayoutTextControl {INPUT} at (0,19) size 131x19 [color=#545454] [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutFlexibleBox {DIV} at (3,3) size 125x13
-          LayoutBlockFlow {DIV} at (0,0) size 97.28x13
+        LayoutFlexibleBox {DIV} at (3,2) size 125x15
+          LayoutBlockFlow {DIV} at (0,1) size 97.28x13
       LayoutText {#text} at (131,19) size 4x18
         text run at (131,19) width 4: " "
       LayoutTextControl {INPUT} at (135,19) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutFlexibleBox {DIV} at (3,3) size 125x13
-          LayoutBlockFlow {DIV} at (0,0) size 97.28x13
+        LayoutFlexibleBox {DIV} at (3,2) size 125x15
+          LayoutBlockFlow {DIV} at (0,1) size 97.28x13
       LayoutText {#text} at (0,0) size 0x0
       LayoutText {#text} at (0,0) size 0x0
 layer at (11,11) size 97x13
@@ -37,11 +37,11 @@
 layer at (146,30) size 97x13
   LayoutBlockFlow {DIV} at (0,0) size 97.28x13
 hidden layer at (108,31) size 15x11 transparent
-  LayoutDetailsMarker {DIV} at (97.28,1.02) size 14.72x10.97: down
+  LayoutDetailsMarker {DIV} at (97.28,2.02) size 14.72x10.97: down
 layer at (123,29) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (112,-1) size 13x15
+  LayoutBlockFlow {DIV} at (112,0) size 13x15
 hidden layer at (243,31) size 15x11 transparent
-  LayoutDetailsMarker {DIV} at (97.28,1.02) size 14.72x10.97: down
+  LayoutDetailsMarker {DIV} at (97.28,2.02) size 14.72x10.97: down
 layer at (258,29) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (112,-1) size 13x15
+  LayoutBlockFlow {DIV} at (112,0) size 13x15
 caret: position 0 of child 0 {DIV} of child 0 {DIV} of child 0 {DIV} of {#document-fragment} of child 3 {INPUT} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/number/number-appearance-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/number/number-appearance-rtl-expected.txt
index aea6993..7a50929 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/number/number-appearance-rtl-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/number/number-appearance-rtl-expected.txt
@@ -5,46 +5,46 @@
     LayoutBlockFlow {BODY} at (8,16) size 784x264
       LayoutBlockFlow {P} at (0,0) size 784x19
         LayoutTextControl {INPUT} at (653,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 125x13
-            LayoutBlockFlow {DIV} at (13,0) size 112x13
+          LayoutFlexibleBox {DIV} at (3,2) size 125x15
+            LayoutBlockFlow {DIV} at (13,1) size 112x13
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {P} at (0,35) size 784x19
         LayoutTextControl {INPUT} at (653,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 125x13
-            LayoutBlockFlow {DIV} at (13,0) size 112x13
+          LayoutFlexibleBox {DIV} at (3,2) size 125x15
+            LayoutBlockFlow {DIV} at (13,1) size 112x13
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {P} at (0,70) size 784x19
         LayoutTextControl {INPUT} at (0,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 125x13
-            LayoutBlockFlow {DIV} at (13,0) size 112x13
+          LayoutFlexibleBox {DIV} at (3,2) size 125x15
+            LayoutBlockFlow {DIV} at (13,1) size 112x13
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {P} at (0,105) size 784x19
         LayoutTextControl {INPUT} at (0,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 125x13
-            LayoutBlockFlow {DIV} at (13,0) size 112x13
-            LayoutBlockFlow {DIV} at (0,-1) size 13x15
+          LayoutFlexibleBox {DIV} at (3,2) size 125x15
+            LayoutBlockFlow {DIV} at (13,1) size 112x13
+            LayoutBlockFlow {DIV} at (0,0) size 13x15
         LayoutText {#text} at (0,0) size 0x0
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {P} at (0,140) size 784x19
         LayoutTextControl {INPUT} at (0,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 125x13
-            LayoutBlockFlow {DIV} at (0,0) size 112x13
+          LayoutFlexibleBox {DIV} at (3,2) size 125x15
+            LayoutBlockFlow {DIV} at (0,1) size 112x13
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {P} at (0,175) size 784x19
         LayoutTextControl {INPUT} at (0,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 125x13
-            LayoutBlockFlow {DIV} at (0,0) size 112x13
+          LayoutFlexibleBox {DIV} at (3,2) size 125x15
+            LayoutBlockFlow {DIV} at (0,1) size 112x13
         LayoutText {#text} at (0,0) size 0x0
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {P} at (0,210) size 784x19
         LayoutTextControl {INPUT} at (0,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 125x13
-            LayoutBlockFlow {DIV} at (13,0) size 112x13
+          LayoutFlexibleBox {DIV} at (3,2) size 125x15
+            LayoutBlockFlow {DIV} at (13,1) size 112x13
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {P} at (0,245) size 784x19
         LayoutTextControl {INPUT} at (0,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 125x13
-            LayoutBlockFlow {DIV} at (13,0) size 112x13
+          LayoutFlexibleBox {DIV} at (3,2) size 125x15
+            LayoutBlockFlow {DIV} at (13,1) size 112x13
         LayoutText {#text} at (0,0) size 0x0
         LayoutText {#text} at (0,0) size 0x0
 layer at (677,19) size 112x13
@@ -80,17 +80,17 @@
     LayoutText {#text} at (105,0) size 7x13
       text run at (105,0) width 7: "8"
 layer at (664,18) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (0,-1) size 13x15
+  LayoutBlockFlow {DIV} at (0,0) size 13x15
 layer at (664,53) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (0,-1) size 13x15
+  LayoutBlockFlow {DIV} at (0,0) size 13x15
 layer at (11,88) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (0,-1) size 13x15
+  LayoutBlockFlow {DIV} at (0,0) size 13x15
 layer at (123,158) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (112,-1) size 13x15
+  LayoutBlockFlow {DIV} at (112,0) size 13x15
 layer at (123,193) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (112,-1) size 13x15
+  LayoutBlockFlow {DIV} at (112,0) size 13x15
 layer at (11,228) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (0,-1) size 13x15
+  LayoutBlockFlow {DIV} at (0,0) size 13x15
 layer at (11,263) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (0,-1) size 13x15
+  LayoutBlockFlow {DIV} at (0,0) size 13x15
 caret: position 4 of child 0 {#text} of child 0 {DIV} of child 0 {DIV} of child 0 {DIV} of {#document-fragment} of child 0 {INPUT} of child 6 {P} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/number/number-appearance-spinbutton-layer-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/number/number-appearance-spinbutton-layer-expected.txt
index a5dbe99..bb05c0a 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/number/number-appearance-spinbutton-layer-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/number/number-appearance-spinbutton-layer-expected.txt
@@ -5,8 +5,8 @@
     LayoutBlockFlow {BODY} at (8,8) size 784x38
       LayoutBR {BR} at (131,0) size 0x18
       LayoutTextControl {INPUT} at (0,19) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutFlexibleBox {DIV} at (3,3) size 125x13
-          LayoutBlockFlow {DIV} at (0,0) size 112x13
+        LayoutFlexibleBox {DIV} at (3,2) size 125x15
+          LayoutBlockFlow {DIV} at (0,1) size 112x13
       LayoutText {#text} at (0,0) size 0x0
 layer at (11,30) size 112x13
   LayoutBlockFlow {DIV} at (0,0) size 112x13
@@ -14,13 +14,13 @@
       text run at (0,0) width 13: "10"
 layer at (8,8) size 131x19 transparent
   LayoutTextControl {INPUT} at (0,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-    LayoutFlexibleBox {DIV} at (3,3) size 125x13
-      LayoutBlockFlow {DIV} at (0,0) size 112x13
+    LayoutFlexibleBox {DIV} at (3,2) size 125x15
+      LayoutBlockFlow {DIV} at (0,1) size 112x13
 layer at (11,11) size 112x13
   LayoutBlockFlow {DIV} at (0,0) size 112x13
     LayoutText {#text} at (0,0) size 13x13
       text run at (0,0) width 13: "10"
 layer at (123,10) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (112,-1) size 13x15
+  LayoutBlockFlow {DIV} at (112,0) size 13x15
 layer at (123,29) size 13x15 transparent
-  LayoutBlockFlow {DIV} at (112,-1) size 13x15
+  LayoutBlockFlow {DIV} at (112,0) size 13x15
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/search/search-vertical-alignment-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/search/search-vertical-alignment-expected.txt
index 8f2911b..ab3f415d 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/search/search-vertical-alignment-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/search/search-vertical-alignment-expected.txt
@@ -12,9 +12,9 @@
           text run at (469,18) width 125: "same in both fields."
       LayoutBlockFlow {P} at (0,52) size 784x45
         LayoutTextControl {INPUT} at (0,0) size 131x45 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 125x39
-            LayoutBlockFlow {DIV} at (0,13) size 16x13
-            LayoutBlockFlow {DIV} at (16,13) size 97x13
+          LayoutFlexibleBox {DIV} at (3,16) size 125x13
+            LayoutBlockFlow {DIV} at (0,0) size 16x13
+            LayoutBlockFlow {DIV} at (16,0) size 97x13
         LayoutText {#text} at (131,13) size 4x18
           text run at (131,13) width 4: " "
         LayoutTextControl {INPUT} at (135,0) size 131x45 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
@@ -30,9 +30,9 @@
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {P} at (0,147) size 784x18
         LayoutTextControl {INPUT} at (0,4) size 131x12 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,0) size 125x12
+          LayoutFlexibleBox {DIV} at (3,-0.50) size 125x13
             LayoutBlockFlow {DIV} at (0,0) size 16x13
-            LayoutBlockFlow {DIV} at (16,-0.50) size 97x13
+            LayoutBlockFlow {DIV} at (16,0) size 97x13
         LayoutText {#text} at (131,0) size 4x18
           text run at (131,0) width 4: " "
         LayoutTextControl {INPUT} at (135,4) size 131x12 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
@@ -62,8 +62,8 @@
     LayoutText {#text} at (0,0) size 21x13
       text run at (0,0) width 21: "Text"
 layer at (125,77) size 11x11 transparent
-  LayoutBlockFlow {DIV} at (114,14) size 11x11
+  LayoutBlockFlow {DIV} at (114,1) size 11x11
 layer at (125,126) size 11x11 transparent
   LayoutBlockFlow {DIV} at (114,1) size 11x11
 layer at (125,160) size 11x11 transparent
-  LayoutBlockFlow {DIV} at (114,0.50) size 11x11
+  LayoutBlockFlow {DIV} at (114,1) size 11x11
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/search/search-vertical-alignment-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/forms/search/search-vertical-alignment-expected.txt
index c5ed996..c0ba944 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/search/search-vertical-alignment-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/search/search-vertical-alignment-expected.txt
@@ -12,9 +12,9 @@
           text run at (470,18) width 127: "same in both fields."
       LayoutBlockFlow {P} at (0,52) size 784x45
         LayoutTextControl {INPUT} at (0,0) size 175x45 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,3) size 169x39
-            LayoutBlockFlow {DIV} at (2,13) size 13x13
-            LayoutBlockFlow {DIV} at (18,11.50) size 138x16
+          LayoutFlexibleBox {DIV} at (3,14.50) size 169x16
+            LayoutBlockFlow {DIV} at (2,1.50) size 13x13
+            LayoutBlockFlow {DIV} at (18,0) size 138x16
         LayoutText {#text} at (175,13) size 4x17
           text run at (175,13) width 4: " "
         LayoutTextControl {INPUT} at (179,0) size 173x45 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
@@ -30,9 +30,9 @@
         LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {P} at (0,147) size 784x18
         LayoutTextControl {INPUT} at (0,3) size 175x12 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutFlexibleBox {DIV} at (3,0) size 169x12
-            LayoutBlockFlow {DIV} at (2,0) size 13x13
-            LayoutBlockFlow {DIV} at (18,-2) size 138x16
+          LayoutFlexibleBox {DIV} at (3,-2) size 169x16
+            LayoutBlockFlow {DIV} at (2,1.50) size 13x13
+            LayoutBlockFlow {DIV} at (18,0) size 138x16
         LayoutText {#text} at (175,0) size 4x17
           text run at (175,0) width 4: " "
         LayoutTextControl {INPUT} at (179,3) size 173x12 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
@@ -62,8 +62,8 @@
     LayoutText {#text} at (0,0) size 24x16
       text run at (0,0) width 24: "Text"
 layer at (168,78) size 9x9 transparent
-  LayoutBlockFlow {DIV} at (157,15) size 9x9
+  LayoutBlockFlow {DIV} at (157,3.50) size 9x9
 layer at (168,126) size 9x9 transparent
   LayoutBlockFlow {DIV} at (157,3.50) size 9x9
 layer at (168,160) size 9x9 transparent
-  LayoutBlockFlow {DIV} at (157,1.50) size 9x9
+  LayoutBlockFlow {DIV} at (157,3.50) size 9x9
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/search/searchfield-heights-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/forms/search/searchfield-heights-expected.png
index a3a46114..66dfff1 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/search/searchfield-heights-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/search/searchfield-heights-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/search/searchfield-heights-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/forms/search/searchfield-heights-expected.txt
index 6bfd943..3307a97e 100644
--- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/search/searchfield-heights-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/search/searchfield-heights-expected.txt
@@ -6,24 +6,24 @@
       LayoutText {#text} at (0,0) size 377x17
         text run at (0,0) width 377: "This tests that aqua-style search fields do not honor height."
       LayoutBR {BR} at (376,14) size 1x0
-      LayoutTextControl {INPUT} at (0,121) size 79x6 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutFlexibleBox {DIV} at (3,0) size 73x6
+      LayoutTextControl {INPUT} at (0,122) size 79x6 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutFlexibleBox {DIV} at (3,-1.50) size 73x9
           LayoutBlockFlow {DIV} at (2,0) size 9x9
-          LayoutBlockFlow {DIV} at (14,0) size 50x6
+          LayoutBlockFlow {DIV} at (14,1.50) size 50x6
       LayoutText {#text} at (79,112) size 4x17
         text run at (79,112) width 4: " "
       LayoutTextControl {INPUT} at (83,101) size 179x40 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutFlexibleBox {DIV} at (3,3) size 173x34
-          LayoutBlockFlow {DIV} at (2,9.50) size 15x15
-          LayoutBlockFlow {DIV} at (20,8.50) size 139x17
+        LayoutFlexibleBox {DIV} at (3,11.50) size 173x17
+          LayoutBlockFlow {DIV} at (2,1) size 15x15
+          LayoutBlockFlow {DIV} at (20,0) size 139x17
       LayoutText {#text} at (262,112) size 4x17
         text run at (262,112) width 4: " "
       LayoutTextControl {INPUT} at (266,18) size 344x200 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutFlexibleBox {DIV} at (3,3) size 338x194
-          LayoutBlockFlow {DIV} at (2,83.50) size 27x27
-          LayoutBlockFlow {DIV} at (32,81.50) size 283x31
+        LayoutFlexibleBox {DIV} at (3,84.50) size 338x31
+          LayoutBlockFlow {DIV} at (2,2) size 27x27
+          LayoutBlockFlow {DIV} at (32,0) size 283x31
       LayoutText {#text} at (0,0) size 0x0
-layer at (25,129) size 50x6
+layer at (25,130) size 50x6
   LayoutBlockFlow {DIV} at (0,0) size 50x6
     LayoutText {#text} at (0,0) size 10x6
       text run at (0,0) width 10: "mini"
@@ -35,9 +35,9 @@
   LayoutBlockFlow {DIV} at (0,0) size 283x31
     LayoutText {#text} at (0,0) size 85x30
       text run at (0,0) width 85: "regular"
-layer at (76,130) size 5x5 transparent
-  LayoutBlockFlow {DIV} at (65,0.50) size 5x5
+layer at (76,131) size 5x5 transparent
+  LayoutBlockFlow {DIV} at (65,2) size 5x5
 layer at (254,124) size 10x10 transparent
-  LayoutBlockFlow {DIV} at (160,12) size 10x10
+  LayoutBlockFlow {DIV} at (160,3.50) size 10x10
 layer at (593,117) size 19x19 transparent
-  LayoutBlockFlow {DIV} at (316,87.50) size 19x19
+  LayoutBlockFlow {DIV} at (316,6) size 19x19
diff --git a/third_party/WebKit/Source/core/core.gypi b/third_party/WebKit/Source/core/core.gypi
index 778bf9a..98f075a3 100644
--- a/third_party/WebKit/Source/core/core.gypi
+++ b/third_party/WebKit/Source/core/core.gypi
@@ -2642,12 +2642,12 @@
             'dom/custom/CustomElementSyncMicrotaskQueue.h',
             'dom/custom/CustomElementUpgradeCandidateMap.cpp',
             'dom/custom/CustomElementUpgradeCandidateMap.h',
-            'dom/shadow/ComposedTreeTraversal.cpp',
-            'dom/shadow/ComposedTreeTraversal.h',
             'dom/shadow/DistributedNodes.cpp',
             'dom/shadow/DistributedNodes.h',
             'dom/shadow/ElementShadow.cpp',
             'dom/shadow/ElementShadow.h',
+            'dom/shadow/FlatTreeTraversal.cpp',
+            'dom/shadow/FlatTreeTraversal.h',
             'dom/shadow/InsertionPoint.cpp',
             'dom/shadow/InsertionPoint.h',
             'dom/shadow/SelectRuleFeatureSet.cpp',
@@ -3932,7 +3932,7 @@
             'dom/TreeScopeStyleSheetCollectionTest.cpp',
             'dom/TreeScopeTest.cpp',
             'dom/URLSearchParamsTest.cpp',
-            'dom/shadow/ComposedTreeTraversalTest.cpp',
+            'dom/shadow/FlatTreeTraversalTest.cpp',
             'editing/EditingStrategyTest.cpp',
             'editing/EditingTestBase.cpp',
             'editing/EditingTestBase.h',
diff --git a/third_party/WebKit/Source/core/css/SelectorChecker.cpp b/third_party/WebKit/Source/core/css/SelectorChecker.cpp
index 7714683..22d4d5f 100644
--- a/third_party/WebKit/Source/core/css/SelectorChecker.cpp
+++ b/third_party/WebKit/Source/core/css/SelectorChecker.cpp
@@ -37,7 +37,7 @@
 #include "core/dom/NthIndexCache.h"
 #include "core/dom/StyleEngine.h"
 #include "core/dom/Text.h"
-#include "core/dom/shadow/ComposedTreeTraversal.h"
+#include "core/dom/shadow/FlatTreeTraversal.h"
 #include "core/dom/shadow/InsertionPoint.h"
 #include "core/dom/shadow/ShadowRoot.h"
 #include "core/editing/FrameSelection.h"
@@ -1073,7 +1073,7 @@
     for (subContext.selector = selector.selectorList()->first(); subContext.selector; subContext.selector = CSSSelectorList::next(*subContext.selector)) {
         subContext.treatShadowHostAsNormalScope = true;
         subContext.scope = context.scope;
-        // Use ComposedTreeTraversal to traverse a composed ancestor list of a given element.
+        // Use FlatTreeTraversal to traverse a composed ancestor list of a given element.
         Element* nextElement = &element;
         SelectorCheckingContext hostContext(subContext);
         do {
@@ -1092,7 +1092,7 @@
                 break;
 
             hostContext.inRightmostCompound = false;
-            nextElement = ComposedTreeTraversal::parentElement(*nextElement);
+            nextElement = FlatTreeTraversal::parentElement(*nextElement);
         } while (nextElement);
     }
     if (matched) {
diff --git a/third_party/WebKit/Source/core/dom/Document.cpp b/third_party/WebKit/Source/core/dom/Document.cpp
index d082a8ad..3f705a6 100644
--- a/third_party/WebKit/Source/core/dom/Document.cpp
+++ b/third_party/WebKit/Source/core/dom/Document.cpp
@@ -104,8 +104,8 @@
 #include "core/dom/XMLDocument.h"
 #include "core/dom/custom/CustomElementMicrotaskRunQueue.h"
 #include "core/dom/custom/CustomElementRegistrationContext.h"
-#include "core/dom/shadow/ComposedTreeTraversal.h"
 #include "core/dom/shadow/ElementShadow.h"
+#include "core/dom/shadow/FlatTreeTraversal.h"
 #include "core/dom/shadow/ShadowRoot.h"
 #include "core/editing/DragCaretController.h"
 #include "core/editing/Editor.h"
@@ -1889,8 +1889,9 @@
 
 void Document::updateLayoutTreeForNodeIfNeeded(Node* node)
 {
+    DocumentLifecycle::PreventThrottlingScope preventThrottling(lifecycle());
     ASSERT(node);
-    if (!node->canParticipateInComposedTree())
+    if (!node->canParticipateInFlatTree())
         return;
     if (!needsLayoutTreeUpdate())
         return;
@@ -3516,12 +3517,12 @@
         return;
 
     m_hoverNode->updateDistribution();
-    if (element != m_hoverNode && (!m_hoverNode->isTextNode() || element != ComposedTreeTraversal::parent(*m_hoverNode)))
+    if (element != m_hoverNode && (!m_hoverNode->isTextNode() || element != FlatTreeTraversal::parent(*m_hoverNode)))
         return;
 
-    m_hoverNode = ComposedTreeTraversal::parent(element);
+    m_hoverNode = FlatTreeTraversal::parent(element);
     while (m_hoverNode && !m_hoverNode->layoutObject())
-        m_hoverNode = ComposedTreeTraversal::parent(*m_hoverNode);
+        m_hoverNode = FlatTreeTraversal::parent(*m_hoverNode);
 
     // If the mouse cursor is not visible, do not clear existing
     // hover effects on the ancestors of |element| and do not invoke
@@ -3541,9 +3542,9 @@
     if (element != m_activeHoverElement)
         return;
 
-    Node* activeNode = ComposedTreeTraversal::parent(element);
+    Node* activeNode = FlatTreeTraversal::parent(element);
     while (activeNode && activeNode->isElementNode() && !activeNode->layoutObject())
-        activeNode = ComposedTreeTraversal::parent(*activeNode);
+        activeNode = FlatTreeTraversal::parent(*activeNode);
 
     m_activeHoverElement = activeNode && activeNode->isElementNode() ? toElement(activeNode) : 0;
 }
@@ -5495,7 +5496,7 @@
     if (oldActiveElement && !request.active()) {
         // The oldActiveElement layoutObject is null, dropped on :active by setting display: none,
         // for instance. We still need to clear the ActiveChain as the mouse is released.
-        for (RefPtrWillBeRawPtr<Node> node = oldActiveElement; node; node = ComposedTreeTraversal::parent(*node)) {
+        for (RefPtrWillBeRawPtr<Node> node = oldActiveElement; node; node = FlatTreeTraversal::parent(*node)) {
             ASSERT(!node->isTextNode());
             node->setActive(false);
             m_userActionElements.setInActiveChain(node.get(), false);
@@ -5506,7 +5507,7 @@
         if (!oldActiveElement && newActiveElement && !newActiveElement->isDisabledFormControl() && request.active() && !request.touchMove()) {
             // We are setting the :active chain and freezing it. If future moves happen, they
             // will need to reference this chain.
-            for (Node* node = newActiveElement; node; node = ComposedTreeTraversal::parent(*node)) {
+            for (Node* node = newActiveElement; node; node = FlatTreeTraversal::parent(*node)) {
                 ASSERT(!node->isTextNode());
                 m_userActionElements.setInActiveChain(node, true);
             }
diff --git a/third_party/WebKit/Source/core/dom/ElementTraversal.h b/third_party/WebKit/Source/core/dom/ElementTraversal.h
index d21ae98c..b1e755b 100644
--- a/third_party/WebKit/Source/core/dom/ElementTraversal.h
+++ b/third_party/WebKit/Source/core/dom/ElementTraversal.h
@@ -66,7 +66,7 @@
 // Note that these functions do not traverse into child shadow trees of any
 // shadow hosts they encounter. If you need to traverse the shadow DOM, you can
 // manually traverse the shadow trees using a second Traversal, or use
-// ComposedTreeTraversal.
+// FlatTreeTraversal.
 //
 // ElementTraversal is a specialized version of Traversal<Element>.
 template <class ElementType>
diff --git a/third_party/WebKit/Source/core/dom/LayoutTreeBuilderTraversal.cpp b/third_party/WebKit/Source/core/dom/LayoutTreeBuilderTraversal.cpp
index d85de7c..98f12d3 100644
--- a/third_party/WebKit/Source/core/dom/LayoutTreeBuilderTraversal.cpp
+++ b/third_party/WebKit/Source/core/dom/LayoutTreeBuilderTraversal.cpp
@@ -28,7 +28,7 @@
 
 #include "core/HTMLNames.h"
 #include "core/dom/PseudoElement.h"
-#include "core/dom/shadow/ComposedTreeTraversal.h"
+#include "core/dom/shadow/FlatTreeTraversal.h"
 #include "core/layout/LayoutObject.h"
 
 namespace blink {
@@ -55,22 +55,22 @@
 {
     // TODO(hayato): Uncomment this once we can be sure LayoutTreeBuilderTraversal::parent() is used only for a node in a document.
     // ASSERT(node.inDocument());
-    return ComposedTreeTraversal::parent(node, details);
+    return FlatTreeTraversal::parent(node, details);
 }
 
 Node* nextSibling(const Node& node)
 {
     if (node.isBeforePseudoElement()) {
-        if (Node* next = ComposedTreeTraversal::firstChild(*ComposedTreeTraversal::parent(node)))
+        if (Node* next = FlatTreeTraversal::firstChild(*FlatTreeTraversal::parent(node)))
             return next;
     } else {
-        if (Node* next = ComposedTreeTraversal::nextSibling(node))
+        if (Node* next = FlatTreeTraversal::nextSibling(node))
             return next;
         if (node.isAfterPseudoElement())
             return 0;
     }
 
-    Node* parent = ComposedTreeTraversal::parent(node);
+    Node* parent = FlatTreeTraversal::parent(node);
     if (parent && parent->isElementNode())
         return toElement(parent)->pseudoElement(AFTER);
 
@@ -80,16 +80,16 @@
 Node* previousSibling(const Node& node)
 {
     if (node.isAfterPseudoElement()) {
-        if (Node* previous = ComposedTreeTraversal::lastChild(*ComposedTreeTraversal::parent(node)))
+        if (Node* previous = FlatTreeTraversal::lastChild(*FlatTreeTraversal::parent(node)))
             return previous;
     } else {
-        if (Node* previous = ComposedTreeTraversal::previousSibling(node))
+        if (Node* previous = FlatTreeTraversal::previousSibling(node))
             return previous;
         if (node.isBeforePseudoElement())
             return 0;
     }
 
-    Node* parent = ComposedTreeTraversal::parent(node);
+    Node* parent = FlatTreeTraversal::parent(node);
     if (parent && parent->isElementNode())
         return toElement(parent)->pseudoElement(BEFORE);
 
@@ -98,7 +98,7 @@
 
 static Node* lastChild(const Node& node)
 {
-    return ComposedTreeTraversal::lastChild(node);
+    return FlatTreeTraversal::lastChild(node);
 }
 
 static Node* pseudoAwarePreviousSibling(const Node& node)
@@ -149,7 +149,7 @@
 
 Node* firstChild(const Node& node)
 {
-    return ComposedTreeTraversal::firstChild(node);
+    return FlatTreeTraversal::firstChild(node);
 }
 
 static Node* pseudoAwareNextSibling(const Node& node)
diff --git a/third_party/WebKit/Source/core/dom/Node.cpp b/third_party/WebKit/Source/core/dom/Node.cpp
index 1bbe752..897430f 100644
--- a/third_party/WebKit/Source/core/dom/Node.cpp
+++ b/third_party/WebKit/Source/core/dom/Node.cpp
@@ -54,8 +54,8 @@
 #include "core/dom/Text.h"
 #include "core/dom/TreeScopeAdopter.h"
 #include "core/dom/UserActionElementSet.h"
-#include "core/dom/shadow/ComposedTreeTraversal.h"
 #include "core/dom/shadow/ElementShadow.h"
+#include "core/dom/shadow/FlatTreeTraversal.h"
 #include "core/dom/shadow/InsertionPoint.h"
 #include "core/dom/shadow/ShadowRoot.h"
 #include "core/editing/EditingUtilities.h"
@@ -760,7 +760,7 @@
 bool Node::isInert() const
 {
     const HTMLDialogElement* dialog = document().activeModalDialog();
-    if (dialog && this != document() && (!canParticipateInComposedTree() || !ComposedTreeTraversal::containsIncludingPseudoElement(*dialog, *this)))
+    if (dialog && this != document() && (!canParticipateInFlatTree() || !FlatTreeTraversal::containsIncludingPseudoElement(*dialog, *this)))
         return true;
     return document().ownerElement() && document().ownerElement()->isInert();
 }
@@ -963,11 +963,11 @@
         if (style.userDrag() == DRAG_ELEMENT && style.userSelect() == SELECT_NONE)
             return false;
     }
-    ContainerNode* parent = ComposedTreeTraversal::parent(*this);
+    ContainerNode* parent = FlatTreeTraversal::parent(*this);
     return parent ? parent->canStartSelection() : true;
 }
 
-bool Node::canParticipateInComposedTree() const
+bool Node::canParticipateInFlatTree() const
 {
     return !isShadowRoot() && !isSlotOrActiveInsertionPoint();
 }
@@ -1565,9 +1565,9 @@
     showTreeAndMark(this, "*");
 }
 
-void Node::showTreeForThisInComposedTree() const
+void Node::showTreeForThisInFlatTree() const
 {
-    showTreeAndMarkInComposedTree(this, "*");
+    showTreeAndMarkInFlatTree(this, "*");
 }
 
 void Node::showNodePathForThis() const
@@ -1659,9 +1659,9 @@
     }
 }
 
-static void traverseTreeAndMarkInComposedTree(const String& baseIndent, const Node* rootNode, const Node* markedNode1, const char* markedLabel1, const Node* markedNode2, const char* markedLabel2)
+static void traverseTreeAndMarkInFlatTree(const String& baseIndent, const Node* rootNode, const Node* markedNode1, const char* markedLabel1, const Node* markedNode2, const char* markedLabel2)
 {
-    for (const Node* node = rootNode; node; node = ComposedTreeTraversal::nextSibling(*node)) {
+    for (const Node* node = rootNode; node; node = FlatTreeTraversal::nextSibling(*node)) {
         StringBuilder indent;
         if (node == markedNode1)
             indent.append(markedLabel1);
@@ -1671,9 +1671,9 @@
         node->showNode(indent.toString().utf8().data());
         indent.append('\t');
 
-        Node* child = ComposedTreeTraversal::firstChild(*node);
+        Node* child = FlatTreeTraversal::firstChild(*node);
         if (child)
-            traverseTreeAndMarkInComposedTree(indent.toString(), child, markedNode1, markedLabel1, markedNode2, markedLabel2);
+            traverseTreeAndMarkInFlatTree(indent.toString(), child, markedNode1, markedLabel1, markedNode2, markedLabel2);
     }
 }
 
@@ -1689,7 +1689,7 @@
     traverseTreeAndMark(startingIndent, rootNode, markedNode1, markedLabel1, markedNode2, markedLabel2);
 }
 
-void Node::showTreeAndMarkInComposedTree(const Node* markedNode1, const char* markedLabel1, const Node* markedNode2, const char* markedLabel2) const
+void Node::showTreeAndMarkInFlatTree(const Node* markedNode1, const char* markedLabel1, const Node* markedNode2, const char* markedLabel2) const
 {
     const Node* rootNode;
     const Node* node = this;
@@ -1698,7 +1698,7 @@
     rootNode = node;
 
     String startingIndent;
-    traverseTreeAndMarkInComposedTree(startingIndent, rootNode, markedNode1, markedLabel1, markedNode2, markedLabel2);
+    traverseTreeAndMarkInFlatTree(startingIndent, rootNode, markedNode1, markedLabel1, markedNode2, markedLabel2);
 }
 
 void Node::formatForDebugger(char* buffer, unsigned length) const
@@ -1757,7 +1757,7 @@
 Element* Node::enclosingLinkEventParentOrSelf() const
 {
     const Node* result = nullptr;
-    for (const Node* node = this; node; node = ComposedTreeTraversal::parent(*node)) {
+    for (const Node* node = this; node; node = FlatTreeTraversal::parent(*node)) {
         // For imagemaps, the enclosing link node is the associated area element not the image itself.
         // So we don't let images be the enclosingLinkNode, even though isLink sometimes returns true
         // for them.
diff --git a/third_party/WebKit/Source/core/dom/Node.h b/third_party/WebKit/Source/core/dom/Node.h
index 7d05ca56..fced988a 100644
--- a/third_party/WebKit/Source/core/dom/Node.h
+++ b/third_party/WebKit/Source/core/dom/Node.h
@@ -297,7 +297,7 @@
     bool isShadowRoot() const { return isDocumentFragment() && isTreeScope(); }
     bool isInsertionPoint() const { return getFlag(IsInsertionPointFlag); }
 
-    bool canParticipateInComposedTree() const;
+    bool canParticipateInFlatTree() const;
     bool isSlotOrActiveInsertionPoint() const;
 
     bool hasCustomStyleCallbacks() const { return getFlag(HasCustomStyleCallbacksFlag); }
@@ -601,10 +601,10 @@
 
     void showNode(const char* prefix = "") const;
     void showTreeForThis() const;
-    void showTreeForThisInComposedTree() const;
+    void showTreeForThisInFlatTree() const;
     void showNodePathForThis() const;
     void showTreeAndMark(const Node* markedNode1, const char* markedLabel1, const Node* markedNode2 = nullptr, const char* markedLabel2 = nullptr) const;
-    void showTreeAndMarkInComposedTree(const Node* markedNode1, const char* markedLabel1, const Node* markedNode2 = nullptr, const char* markedLabel2 = nullptr) const;
+    void showTreeAndMarkInFlatTree(const Node* markedNode1, const char* markedLabel1, const Node* markedNode2 = nullptr, const char* markedLabel2 = nullptr) const;
     void showTreeForThisAcrossFrame() const;
 #endif
 
diff --git a/third_party/WebKit/Source/core/dom/NodeTraversal.h b/third_party/WebKit/Source/core/dom/NodeTraversal.h
index 61c2c29..9062ab4 100644
--- a/third_party/WebKit/Source/core/dom/NodeTraversal.h
+++ b/third_party/WebKit/Source/core/dom/NodeTraversal.h
@@ -87,7 +87,7 @@
     static Node* childAt(const Node& parent, unsigned index) { return childAtTemplate(parent, index); }
     static Node* childAt(const ContainerNode& parent, unsigned index) { return childAtTemplate(parent, index); }
 
-    // These functions are provided for matching with |ComposedTreeTraversal|.
+    // These functions are provided for matching with |FlatTreeTraversal|.
     static bool hasChildren(const Node& parent) { return firstChild(parent); }
     static bool isDescendantOf(const Node& node, const Node& other) { return node.isDescendantOf(&other); }
     static Node* firstChild(const Node& parent) { return parent.firstChild(); }
diff --git a/third_party/WebKit/Source/core/dom/shadow/ComposedTreeTraversal.cpp b/third_party/WebKit/Source/core/dom/shadow/FlatTreeTraversal.cpp
similarity index 81%
rename from third_party/WebKit/Source/core/dom/shadow/ComposedTreeTraversal.cpp
rename to third_party/WebKit/Source/core/dom/shadow/FlatTreeTraversal.cpp
index cf529209..a37c9976 100644
--- a/third_party/WebKit/Source/core/dom/shadow/ComposedTreeTraversal.cpp
+++ b/third_party/WebKit/Source/core/dom/shadow/FlatTreeTraversal.cpp
@@ -24,7 +24,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "core/dom/shadow/ComposedTreeTraversal.h"
+#include "core/dom/shadow/FlatTreeTraversal.h"
 
 #include "core/dom/Element.h"
 #include "core/dom/shadow/ElementShadow.h"
@@ -43,7 +43,7 @@
     return node.isInV0ShadowTree() || node.isChildOfV0ShadowHost();
 }
 
-Node* ComposedTreeTraversal::traverseChild(const Node& node, TraversalDirection direction)
+Node* FlatTreeTraversal::traverseChild(const Node& node, TraversalDirection direction)
 {
     ElementShadow* shadow = shadowFor(node);
     if (shadow) {
@@ -53,7 +53,7 @@
     return resolveDistributionStartingAt(direction == TraversalDirectionForward ? node.firstChild() : node.lastChild(), direction);
 }
 
-Node* ComposedTreeTraversal::resolveDistributionStartingAt(const Node* node, TraversalDirection direction)
+Node* FlatTreeTraversal::resolveDistributionStartingAt(const Node* node, TraversalDirection direction)
 {
     if (!node)
         return nullptr;
@@ -71,7 +71,7 @@
     return nullptr;
 }
 
-Node* ComposedTreeTraversal::v0ResolveDistributionStartingAt(const Node& node, TraversalDirection direction)
+Node* FlatTreeTraversal::v0ResolveDistributionStartingAt(const Node& node, TraversalDirection direction)
 {
     ASSERT(!isHTMLSlotElement(node));
     for (const Node* sibling = &node; sibling; sibling = (direction == TraversalDirectionForward ? sibling->nextSibling() : sibling->previousSibling())) {
@@ -97,8 +97,8 @@
 }
 
 // TODO(hayato): This may return a wrong result for a node which is not in a
-// document composed tree.  See ComposedTreeTraversalTest's redistribution test for details.
-Node* ComposedTreeTraversal::traverseSiblings(const Node& node, TraversalDirection direction)
+// document flat tree.  See FlatTreeTraversalTest's redistribution test for details.
+Node* FlatTreeTraversal::traverseSiblings(const Node& node, TraversalDirection direction)
 {
     if (node.isChildOfV1ShadowHost())
         return traverseSiblingsForV1HostChild(node, direction);
@@ -124,7 +124,7 @@
     return nullptr;
 }
 
-Node* ComposedTreeTraversal::traverseSiblingsForV1HostChild(const Node& node, TraversalDirection direction)
+Node* FlatTreeTraversal::traverseSiblingsForV1HostChild(const Node& node, TraversalDirection direction)
 {
     HTMLSlotElement* slot = finalDestinationSlotFor(node);
     if (!slot)
@@ -134,7 +134,7 @@
     return traverseSiblings(*slot, direction);
 }
 
-Node* ComposedTreeTraversal::traverseSiblingsForV0Distribution(const Node& node, TraversalDirection direction)
+Node* FlatTreeTraversal::traverseSiblingsForV0Distribution(const Node& node, TraversalDirection direction)
 {
     const InsertionPoint* finalDestination = resolveReprojection(&node);
     if (!finalDestination)
@@ -145,9 +145,9 @@
 
 }
 
-ContainerNode* ComposedTreeTraversal::traverseParent(const Node& node, ParentTraversalDetails* details)
+ContainerNode* FlatTreeTraversal::traverseParent(const Node& node, ParentTraversalDetails* details)
 {
-    // TODO(hayato): Stop this hack for a pseudo element because a pseudo element is not a child of its parentOrShadowHostNode() in a composed tree.
+    // TODO(hayato): Stop this hack for a pseudo element because a pseudo element is not a child of its parentOrShadowHostNode() in a flat tree.
     if (node.isPseudoElement())
         return node.parentOrShadowHostNode();
 
@@ -173,7 +173,7 @@
     return traverseParentOrHost(node);
 }
 
-ContainerNode* ComposedTreeTraversal::traverseParentForV0(const Node& node, ParentTraversalDetails* details)
+ContainerNode* FlatTreeTraversal::traverseParentForV0(const Node& node, ParentTraversalDetails* details)
 {
     if (shadowWhereNodeCanBeDistributed(node)) {
         if (const InsertionPoint* insertionPoint = resolveReprojection(&node)) {
@@ -192,7 +192,7 @@
     return parent;
 }
 
-ContainerNode* ComposedTreeTraversal::traverseParentOrHost(const Node& node)
+ContainerNode* FlatTreeTraversal::traverseParentOrHost(const Node& node)
 {
     ContainerNode* parent = node.parentNode();
     if (!parent)
@@ -206,7 +206,7 @@
     return shadowRoot->host();
 }
 
-Node* ComposedTreeTraversal::childAt(const Node& node, unsigned index)
+Node* FlatTreeTraversal::childAt(const Node& node, unsigned index)
 {
     assertPrecondition(node);
     Node* child = traverseFirstChild(node);
@@ -216,18 +216,18 @@
     return child;
 }
 
-Node* ComposedTreeTraversal::nextSkippingChildren(const Node& node)
+Node* FlatTreeTraversal::nextSkippingChildren(const Node& node)
 {
     if (Node* nextSibling = traverseNextSibling(node))
         return nextSibling;
     return traverseNextAncestorSibling(node);
 }
 
-bool ComposedTreeTraversal::containsIncludingPseudoElement(const ContainerNode& container, const Node& node)
+bool FlatTreeTraversal::containsIncludingPseudoElement(const ContainerNode& container, const Node& node)
 {
     assertPrecondition(container);
     assertPrecondition(node);
-    // This can be slower than ComposedTreeTraversal::contains() because we
+    // This can be slower than FlatTreeTraversal::contains() because we
     // can't early exit even when container doesn't have children.
     for (const Node* current = &node; current; current = traverseParent(*current)) {
         if (current == &container)
@@ -236,7 +236,7 @@
     return false;
 }
 
-Node* ComposedTreeTraversal::previousSkippingChildren(const Node& node)
+Node* FlatTreeTraversal::previousSkippingChildren(const Node& node)
 {
     if (Node* previousSibling = traversePreviousSibling(node))
         return previousSibling;
@@ -245,19 +245,19 @@
 
 static Node* previousAncestorSiblingPostOrder(const Node& current, const Node* stayWithin)
 {
-    ASSERT(!ComposedTreeTraversal::previousSibling(current));
-    for (Node* parent = ComposedTreeTraversal::parent(current); parent; parent = ComposedTreeTraversal::parent(*parent)) {
+    ASSERT(!FlatTreeTraversal::previousSibling(current));
+    for (Node* parent = FlatTreeTraversal::parent(current); parent; parent = FlatTreeTraversal::parent(*parent)) {
         if (parent == stayWithin)
             return nullptr;
-        if (Node* previousSibling = ComposedTreeTraversal::previousSibling(*parent))
+        if (Node* previousSibling = FlatTreeTraversal::previousSibling(*parent))
             return previousSibling;
     }
     return nullptr;
 }
 
 // TODO(yosin) We should consider introducing template class to share code
-// between DOM tree traversal and composed tree tarversal.
-Node* ComposedTreeTraversal::previousPostOrder(const Node& current, const Node* stayWithin)
+// between DOM tree traversal and flat tree tarversal.
+Node* FlatTreeTraversal::previousPostOrder(const Node& current, const Node* stayWithin)
 {
     assertPrecondition(current);
     if (stayWithin)
@@ -275,7 +275,7 @@
     return previousAncestorSiblingPostOrder(current, stayWithin);
 }
 
-bool ComposedTreeTraversal::isDescendantOf(const Node& node, const Node& other)
+bool FlatTreeTraversal::isDescendantOf(const Node& node, const Node& other)
 {
     assertPrecondition(node);
     assertPrecondition(other);
@@ -288,20 +288,20 @@
     return false;
 }
 
-Node* ComposedTreeTraversal::commonAncestor(const Node& nodeA, const Node& nodeB)
+Node* FlatTreeTraversal::commonAncestor(const Node& nodeA, const Node& nodeB)
 {
     assertPrecondition(nodeA);
     assertPrecondition(nodeB);
     Node* result = nodeA.commonAncestor(nodeB,
         [](const Node& node)
         {
-            return ComposedTreeTraversal::parent(node);
+            return FlatTreeTraversal::parent(node);
         });
     assertPostcondition(result);
     return result;
 }
 
-Node* ComposedTreeTraversal::traverseNextAncestorSibling(const Node& node)
+Node* FlatTreeTraversal::traverseNextAncestorSibling(const Node& node)
 {
     ASSERT(!traverseNextSibling(node));
     for (Node* parent = traverseParent(node); parent; parent = traverseParent(*parent)) {
@@ -311,7 +311,7 @@
     return nullptr;
 }
 
-Node* ComposedTreeTraversal::traversePreviousAncestorSibling(const Node& node)
+Node* FlatTreeTraversal::traversePreviousAncestorSibling(const Node& node)
 {
     ASSERT(!traversePreviousSibling(node));
     for (Node* parent = traverseParent(node); parent; parent = traverseParent(*parent)) {
@@ -321,7 +321,7 @@
     return nullptr;
 }
 
-unsigned ComposedTreeTraversal::index(const Node& node)
+unsigned FlatTreeTraversal::index(const Node& node)
 {
     assertPrecondition(node);
     unsigned count = 0;
@@ -330,7 +330,7 @@
     return count;
 }
 
-unsigned ComposedTreeTraversal::countChildren(const Node& node)
+unsigned FlatTreeTraversal::countChildren(const Node& node)
 {
     assertPrecondition(node);
     unsigned count = 0;
@@ -339,7 +339,7 @@
     return count;
 }
 
-Node* ComposedTreeTraversal::lastWithin(const Node& node)
+Node* FlatTreeTraversal::lastWithin(const Node& node)
 {
     assertPrecondition(node);
     Node* descendant = traverseLastChild(node);
@@ -349,7 +349,7 @@
     return descendant;
 }
 
-Node& ComposedTreeTraversal::lastWithinOrSelf(const Node& node)
+Node& FlatTreeTraversal::lastWithinOrSelf(const Node& node)
 {
     assertPrecondition(node);
     Node* lastDescendant = lastWithin(node);
diff --git a/third_party/WebKit/Source/core/dom/shadow/ComposedTreeTraversal.h b/third_party/WebKit/Source/core/dom/shadow/FlatTreeTraversal.h
similarity index 79%
rename from third_party/WebKit/Source/core/dom/shadow/ComposedTreeTraversal.h
rename to third_party/WebKit/Source/core/dom/shadow/FlatTreeTraversal.h
index 2539ba8..6a25a7a 100644
--- a/third_party/WebKit/Source/core/dom/shadow/ComposedTreeTraversal.h
+++ b/third_party/WebKit/Source/core/dom/shadow/FlatTreeTraversal.h
@@ -24,8 +24,8 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef ComposedTreeTraversal_h
-#define ComposedTreeTraversal_h
+#ifndef FlatTreeTraversal_h
+#define FlatTreeTraversal_h
 
 #include "core/CoreExport.h"
 #include "core/dom/Document.h"
@@ -40,18 +40,18 @@
 class HTMLSlotElement;
 class Node;
 
-// Composed tree version of |NodeTraversal|.
+// Flat tree version of |NodeTraversal|.
 //
 // None of member functions takes a |ShadowRoot| or an active insertion point,
 // e.g. roughly speaking <content> and <shadow> in the shadow tree, see
 // |InsertionPoint::isActive()| for details of active insertion points, since
-// they aren't appeared in the composed tree. |assertPrecondition()| and
+// they aren't appeared in the flat tree. |assertPrecondition()| and
 // |assertPostCondition()| check this condition.
 //
 // FIXME: Make some functions inline to optimise the performance.
 // https://bugs.webkit.org/show_bug.cgi?id=82702
-class CORE_EXPORT ComposedTreeTraversal {
-    STATIC_ONLY(ComposedTreeTraversal);
+class CORE_EXPORT FlatTreeTraversal {
+    STATIC_ONLY(FlatTreeTraversal);
 public:
     typedef LayoutTreeBuilderTraversal::ParentDetails ParentTraversalDetails;
 
@@ -73,20 +73,20 @@
     // the children, this function returns |nullptr|.
     static Node* childAt(const Node&, unsigned index);
 
-    // Composed tree version of |NodeTraversal::nextSkippingChildren()|. This
+    // Flat tree version of |NodeTraversal::nextSkippingChildren()|. This
     // function is similar to |next()| but skips child nodes of a specified
     // node.
     static Node* nextSkippingChildren(const Node&);
     static Node* nextSkippingChildren(const Node&, const Node* stayWithin);
 
-    // Composed tree version of |NodeTraversal::previousSkippingChildren()|
+    // Flat tree version of |NodeTraversal::previousSkippingChildren()|
     // similar to |previous()| but skipping child nodes of the specified node.
     static Node* previousSkippingChildren(const Node&);
 
     // Like previous, but visits parents before their children.
     static Node* previousPostOrder(const Node&, const Node* stayWithin = nullptr);
 
-    // Composed tree version of |Node::isDescendantOf(other)|. This function
+    // Flat tree version of |Node::isDescendantOf(other)|. This function
     // returns true if |other| contains |node|, otherwise returns
     // false. If |other| is |node|, this function returns false.
     static bool isDescendantOf(const Node& /*node*/, const Node& other);
@@ -104,14 +104,14 @@
     // returns |nullptr|.
     static Node* commonAncestor(const Node& nodeA, const Node& nodeB);
 
-    // Composed tree version of |Node::nodeIndex()|. This function returns a
+    // Flat tree version of |Node::nodeIndex()|. This function returns a
     // zero base position number of the specified node in child nodes list, or
     // zero if the specified node has no parent.
     static unsigned index(const Node&);
 
-    // Composed tree version of |ContainerNode::countChildren()|. This function
+    // Flat tree version of |ContainerNode::countChildren()|. This function
     // returns the number of the child nodes of the specified node in the
-    // composed tree.
+    // flat tree.
     static unsigned countChildren(const Node&);
 
     static Node* lastWithin(const Node&);
@@ -127,7 +127,7 @@
     {
 #if ENABLE(ASSERT)
         ASSERT(!node.needsDistributionRecalc());
-        ASSERT(node.canParticipateInComposedTree());
+        ASSERT(node.canParticipateInFlatTree());
 #endif
     }
 
@@ -167,7 +167,7 @@
     static Node* traversePreviousAncestorSibling(const Node&);
 };
 
-inline ContainerNode* ComposedTreeTraversal::parent(const Node& node, ParentTraversalDetails* details)
+inline ContainerNode* FlatTreeTraversal::parent(const Node& node, ParentTraversalDetails* details)
 {
     assertPrecondition(node);
     ContainerNode* result = traverseParent(node, details);
@@ -175,13 +175,13 @@
     return result;
 }
 
-inline Element* ComposedTreeTraversal::parentElement(const Node& node)
+inline Element* FlatTreeTraversal::parentElement(const Node& node)
 {
-    ContainerNode* parent = ComposedTreeTraversal::parent(node);
+    ContainerNode* parent = FlatTreeTraversal::parent(node);
     return parent && parent->isElementNode() ? toElement(parent) : nullptr;
 }
 
-inline Node* ComposedTreeTraversal::nextSibling(const Node& node)
+inline Node* FlatTreeTraversal::nextSibling(const Node& node)
 {
     assertPrecondition(node);
     Node* result = traverseSiblings(node, TraversalDirectionForward);
@@ -189,7 +189,7 @@
     return result;
 }
 
-inline Node* ComposedTreeTraversal::previousSibling(const Node& node)
+inline Node* FlatTreeTraversal::previousSibling(const Node& node)
 {
     assertPrecondition(node);
     Node* result = traverseSiblings(node, TraversalDirectionBackward);
@@ -197,7 +197,7 @@
     return result;
 }
 
-inline Node* ComposedTreeTraversal::next(const Node& node)
+inline Node* FlatTreeTraversal::next(const Node& node)
 {
     assertPrecondition(node);
     Node* result = traverseNext(node);
@@ -205,7 +205,7 @@
     return result;
 }
 
-inline Node* ComposedTreeTraversal::next(const Node& node, const Node* stayWithin)
+inline Node* FlatTreeTraversal::next(const Node& node, const Node* stayWithin)
 {
     assertPrecondition(node);
     Node* result = traverseNext(node, stayWithin);
@@ -213,7 +213,7 @@
     return result;
 }
 
-inline Node* ComposedTreeTraversal::nextSkippingChildren(const Node& node, const Node* stayWithin)
+inline Node* FlatTreeTraversal::nextSkippingChildren(const Node& node, const Node* stayWithin)
 {
     assertPrecondition(node);
     Node* result = traverseNextSkippingChildren(node, stayWithin);
@@ -221,7 +221,7 @@
     return result;
 }
 
-inline Node* ComposedTreeTraversal::traverseNext(const Node& node)
+inline Node* FlatTreeTraversal::traverseNext(const Node& node)
 {
     if (Node* next = traverseFirstChild(node))
         return next;
@@ -232,14 +232,14 @@
     return nullptr;
 }
 
-inline Node* ComposedTreeTraversal::traverseNext(const Node& node, const Node* stayWithin)
+inline Node* FlatTreeTraversal::traverseNext(const Node& node, const Node* stayWithin)
 {
     if (Node* next = traverseFirstChild(node))
         return next;
     return traverseNextSkippingChildren(node, stayWithin);
 }
 
-inline Node* ComposedTreeTraversal::traverseNextSkippingChildren(const Node& node, const Node* stayWithin)
+inline Node* FlatTreeTraversal::traverseNextSkippingChildren(const Node& node, const Node* stayWithin)
 {
     for (const Node* next = &node; next; next = traverseParent(*next)) {
         if (next == stayWithin)
@@ -250,7 +250,7 @@
     return nullptr;
 }
 
-inline Node* ComposedTreeTraversal::previous(const Node& node)
+inline Node* FlatTreeTraversal::previous(const Node& node)
 {
     assertPrecondition(node);
     Node* result = traversePrevious(node);
@@ -258,7 +258,7 @@
     return result;
 }
 
-inline Node* ComposedTreeTraversal::traversePrevious(const Node& node)
+inline Node* FlatTreeTraversal::traversePrevious(const Node& node)
 {
     if (Node* previous = traversePreviousSibling(node)) {
         while (Node* child = traverseLastChild(*previous))
@@ -268,7 +268,7 @@
     return traverseParent(node);
 }
 
-inline Node* ComposedTreeTraversal::firstChild(const Node& node)
+inline Node* FlatTreeTraversal::firstChild(const Node& node)
 {
     assertPrecondition(node);
     Node* result = traverseChild(node, TraversalDirectionForward);
@@ -276,7 +276,7 @@
     return result;
 }
 
-inline Node* ComposedTreeTraversal::lastChild(const Node& node)
+inline Node* FlatTreeTraversal::lastChild(const Node& node)
 {
     assertPrecondition(node);
     Node* result = traverseLastChild(node);
@@ -284,27 +284,27 @@
     return result;
 }
 
-inline bool ComposedTreeTraversal::hasChildren(const Node& node)
+inline bool FlatTreeTraversal::hasChildren(const Node& node)
 {
     return firstChild(node);
 }
 
-inline Node* ComposedTreeTraversal::traverseNextSibling(const Node& node)
+inline Node* FlatTreeTraversal::traverseNextSibling(const Node& node)
 {
     return traverseSiblings(node, TraversalDirectionForward);
 }
 
-inline Node* ComposedTreeTraversal::traversePreviousSibling(const Node& node)
+inline Node* FlatTreeTraversal::traversePreviousSibling(const Node& node)
 {
     return traverseSiblings(node, TraversalDirectionBackward);
 }
 
-inline Node* ComposedTreeTraversal::traverseFirstChild(const Node& node)
+inline Node* FlatTreeTraversal::traverseFirstChild(const Node& node)
 {
     return traverseChild(node, TraversalDirectionForward);
 }
 
-inline Node* ComposedTreeTraversal::traverseLastChild(const Node& node)
+inline Node* FlatTreeTraversal::traverseLastChild(const Node& node)
 {
     return traverseChild(node, TraversalDirectionBackward);
 }
diff --git a/third_party/WebKit/Source/core/dom/shadow/ComposedTreeTraversalTest.cpp b/third_party/WebKit/Source/core/dom/shadow/FlatTreeTraversalTest.cpp
similarity index 74%
rename from third_party/WebKit/Source/core/dom/shadow/ComposedTreeTraversalTest.cpp
rename to third_party/WebKit/Source/core/dom/shadow/FlatTreeTraversalTest.cpp
index 12f29ac0..2bc828c9 100644
--- a/third_party/WebKit/Source/core/dom/shadow/ComposedTreeTraversalTest.cpp
+++ b/third_party/WebKit/Source/core/dom/shadow/FlatTreeTraversalTest.cpp
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/dom/shadow/ComposedTreeTraversal.h"
+#include "core/dom/shadow/FlatTreeTraversal.h"
 
 #include "bindings/core/v8/ExceptionStatePlaceholder.h"
 #include "core/dom/Document.h"
@@ -25,13 +25,13 @@
 
 namespace blink {
 
-class ComposedTreeTraversalTest : public ::testing::Test {
+class FlatTreeTraversalTest : public ::testing::Test {
 protected:
     HTMLDocument& document() const;
 
     // Sets |mainHTML| to BODY element with |innerHTML| property and attaches
     // shadow root to child with |shadowHTML|, then update distribution for
-    // calling member functions in |ComposedTreeTraversal|.
+    // calling member functions in |FlatTreeTraversal|.
     void setupSampleHTML(const char* mainHTML, const char* shadowHTML, unsigned);
 
     void setupDocumentTree(const char* mainHTML);
@@ -46,19 +46,19 @@
     OwnPtr<DummyPageHolder> m_dummyPageHolder;
 };
 
-void ComposedTreeTraversalTest::SetUp()
+void FlatTreeTraversalTest::SetUp()
 {
     m_dummyPageHolder = DummyPageHolder::create(IntSize(800, 600));
     m_document = toHTMLDocument(&m_dummyPageHolder->document());
     ASSERT(m_document);
 }
 
-HTMLDocument& ComposedTreeTraversalTest::document() const
+HTMLDocument& FlatTreeTraversalTest::document() const
 {
     return *m_document;
 }
 
-void ComposedTreeTraversalTest::setupSampleHTML(const char* mainHTML, const char* shadowHTML, unsigned index)
+void FlatTreeTraversalTest::setupSampleHTML(const char* mainHTML, const char* shadowHTML, unsigned index)
 {
     RefPtrWillBeRawPtr<Element> body = document().body();
     body->setInnerHTML(String::fromUTF8(mainHTML), ASSERT_NO_EXCEPTION);
@@ -68,20 +68,20 @@
     body->updateDistribution();
 }
 
-void ComposedTreeTraversalTest::setupDocumentTree(const char* mainHTML)
+void FlatTreeTraversalTest::setupDocumentTree(const char* mainHTML)
 {
     RefPtrWillBeRawPtr<Element> body = document().body();
     body->setInnerHTML(String::fromUTF8(mainHTML), ASSERT_NO_EXCEPTION);
 }
 
-void ComposedTreeTraversalTest::attachV0ShadowRoot(Element& shadowHost, const char* shadowInnerHTML)
+void FlatTreeTraversalTest::attachV0ShadowRoot(Element& shadowHost, const char* shadowInnerHTML)
 {
     RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = shadowHost.createShadowRootInternal(ShadowRootType::V0, ASSERT_NO_EXCEPTION);
     shadowRoot->setInnerHTML(String::fromUTF8(shadowInnerHTML), ASSERT_NO_EXCEPTION);
     document().body()->updateDistribution();
 }
 
-void ComposedTreeTraversalTest::attachOpenShadowRoot(Element& shadowHost, const char* shadowInnerHTML)
+void FlatTreeTraversalTest::attachOpenShadowRoot(Element& shadowHost, const char* shadowInnerHTML)
 {
     RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = shadowHost.createShadowRootInternal(ShadowRootType::Open, ASSERT_NO_EXCEPTION);
     shadowRoot->setInnerHTML(String::fromUTF8(shadowInnerHTML), ASSERT_NO_EXCEPTION);
@@ -90,9 +90,9 @@
 
 void testCommonAncestor(Node* expectedResult, const Node& nodeA, const Node& nodeB)
 {
-    Node* result1 = ComposedTreeTraversal::commonAncestor(nodeA, nodeB);
+    Node* result1 = FlatTreeTraversal::commonAncestor(nodeA, nodeB);
     EXPECT_EQ(expectedResult, result1) << "commonAncestor(" << nodeA.textContent() << "," << nodeB.textContent() << ")";
-    Node* result2 = ComposedTreeTraversal::commonAncestor(nodeB, nodeA);
+    Node* result2 = FlatTreeTraversal::commonAncestor(nodeB, nodeA);
     EXPECT_EQ(expectedResult, result2) << "commonAncestor(" << nodeB.textContent() << "," << nodeA.textContent() << ")";
 }
 
@@ -102,7 +102,7 @@
 //  - hasChildren
 //  - index
 //  - isDescendantOf
-TEST_F(ComposedTreeTraversalTest, childAt)
+TEST_F(FlatTreeTraversalTest, childAt)
 {
     const char* mainHTML =
         "<div id='m0'>"
@@ -132,31 +132,31 @@
     const unsigned numberOfChildNodes = 5;
     Node* expectedChildNodes[5] = { s00.get(), m01.get(), s02.get(), s03.get(), s04.get() };
 
-    ASSERT_EQ(numberOfChildNodes, ComposedTreeTraversal::countChildren(*shadowHost));
-    EXPECT_TRUE(ComposedTreeTraversal::hasChildren(*shadowHost));
+    ASSERT_EQ(numberOfChildNodes, FlatTreeTraversal::countChildren(*shadowHost));
+    EXPECT_TRUE(FlatTreeTraversal::hasChildren(*shadowHost));
 
     for (unsigned index = 0; index < numberOfChildNodes; ++index) {
-        Node* child = ComposedTreeTraversal::childAt(*shadowHost, index);
+        Node* child = FlatTreeTraversal::childAt(*shadowHost, index);
         EXPECT_EQ(expectedChildNodes[index], child)
-            << "ComposedTreeTraversal::childAt(*shadowHost, " << index << ")";
-        EXPECT_EQ(index, ComposedTreeTraversal::index(*child))
-            << "ComposedTreeTraversal::index(ComposedTreeTraversal(*shadowHost, " << index << "))";
-        EXPECT_TRUE(ComposedTreeTraversal::isDescendantOf(*child, *shadowHost))
-            << "ComposedTreeTraversal::isDescendantOf(*ComposedTreeTraversal(*shadowHost, " << index << "), *shadowHost)";
+            << "FlatTreeTraversal::childAt(*shadowHost, " << index << ")";
+        EXPECT_EQ(index, FlatTreeTraversal::index(*child))
+            << "FlatTreeTraversal::index(FlatTreeTraversal(*shadowHost, " << index << "))";
+        EXPECT_TRUE(FlatTreeTraversal::isDescendantOf(*child, *shadowHost))
+            << "FlatTreeTraversal::isDescendantOf(*FlatTreeTraversal(*shadowHost, " << index << "), *shadowHost)";
     }
-    EXPECT_EQ(nullptr, ComposedTreeTraversal::childAt(*shadowHost, numberOfChildNodes + 1))
+    EXPECT_EQ(nullptr, FlatTreeTraversal::childAt(*shadowHost, numberOfChildNodes + 1))
         << "Out of bounds childAt() returns nullptr.";
 
     // Distribute node |m00| is child of node in shadow tree |s03|.
-    EXPECT_EQ(m00.get(), ComposedTreeTraversal::childAt(*s03, 0));
+    EXPECT_EQ(m00.get(), FlatTreeTraversal::childAt(*s03, 0));
 }
 
 // Test case for
 //  - commonAncestor
 //  - isDescendantOf
-TEST_F(ComposedTreeTraversalTest, commonAncestor)
+TEST_F(FlatTreeTraversalTest, commonAncestor)
 {
-    // We build following composed tree:
+    // We build following flat tree:
     //             ____BODY___
     //             |    |     |
     //            m0    m1    m2       m1 is shadow host having m10, m11, m12.
@@ -245,7 +245,7 @@
 // Test case for
 //  - nextSkippingChildren
 //  - previousSkippingChildren
-TEST_F(ComposedTreeTraversalTest, nextSkippingChildren)
+TEST_F(FlatTreeTraversalTest, nextSkippingChildren)
 {
     const char* mainHTML =
         "<div id='m0'>m0</div>"
@@ -277,33 +277,33 @@
     RefPtrWillBeRawPtr<Element> s120 = shadowRoot->querySelector("#s120", ASSERT_NO_EXCEPTION);
 
     // Main tree node to main tree node
-    EXPECT_EQ(*m1, ComposedTreeTraversal::nextSkippingChildren(*m0));
-    EXPECT_EQ(*m0, ComposedTreeTraversal::previousSkippingChildren(*m1));
+    EXPECT_EQ(*m1, FlatTreeTraversal::nextSkippingChildren(*m0));
+    EXPECT_EQ(*m0, FlatTreeTraversal::previousSkippingChildren(*m1));
 
     // Distribute node to main tree node
-    EXPECT_EQ(*m2, ComposedTreeTraversal::nextSkippingChildren(*m10));
-    EXPECT_EQ(*m1, ComposedTreeTraversal::previousSkippingChildren(*m2));
+    EXPECT_EQ(*m2, FlatTreeTraversal::nextSkippingChildren(*m10));
+    EXPECT_EQ(*m1, FlatTreeTraversal::previousSkippingChildren(*m2));
 
     // Distribute node to node in shadow tree
-    EXPECT_EQ(*s11, ComposedTreeTraversal::nextSkippingChildren(*m11));
-    EXPECT_EQ(*m11, ComposedTreeTraversal::previousSkippingChildren(*s11));
+    EXPECT_EQ(*s11, FlatTreeTraversal::nextSkippingChildren(*m11));
+    EXPECT_EQ(*m11, FlatTreeTraversal::previousSkippingChildren(*s11));
 
     // Node in shadow tree to distributed node
-    EXPECT_EQ(*s11, ComposedTreeTraversal::nextSkippingChildren(*m11));
-    EXPECT_EQ(*m11, ComposedTreeTraversal::previousSkippingChildren(*s11));
+    EXPECT_EQ(*s11, FlatTreeTraversal::nextSkippingChildren(*m11));
+    EXPECT_EQ(*m11, FlatTreeTraversal::previousSkippingChildren(*s11));
 
-    EXPECT_EQ(*m10, ComposedTreeTraversal::nextSkippingChildren(*s120));
-    EXPECT_EQ(*s120, ComposedTreeTraversal::previousSkippingChildren(*m10));
+    EXPECT_EQ(*m10, FlatTreeTraversal::nextSkippingChildren(*s120));
+    EXPECT_EQ(*s120, FlatTreeTraversal::previousSkippingChildren(*m10));
 
     // Node in shadow tree to main tree
-    EXPECT_EQ(*m2, ComposedTreeTraversal::nextSkippingChildren(*s12));
-    EXPECT_EQ(*m1, ComposedTreeTraversal::previousSkippingChildren(*m2));
+    EXPECT_EQ(*m2, FlatTreeTraversal::nextSkippingChildren(*s12));
+    EXPECT_EQ(*m1, FlatTreeTraversal::previousSkippingChildren(*m2));
 }
 
 // Test case for
 //  - lastWithin
 //  - lastWithinOrSelf
-TEST_F(ComposedTreeTraversalTest, lastWithin)
+TEST_F(FlatTreeTraversalTest, lastWithin)
 {
     const char* mainHTML =
         "<div id='m0'>m0</div>"
@@ -332,23 +332,23 @@
     RefPtrWillBeRawPtr<Element> s11 = shadowRoot->querySelector("#s11", ASSERT_NO_EXCEPTION);
     RefPtrWillBeRawPtr<Element> s12 = shadowRoot->querySelector("#s12", ASSERT_NO_EXCEPTION);
 
-    EXPECT_EQ(m0->firstChild(), ComposedTreeTraversal::lastWithin(*m0));
-    EXPECT_EQ(*m0->firstChild(), ComposedTreeTraversal::lastWithinOrSelf(*m0));
+    EXPECT_EQ(m0->firstChild(), FlatTreeTraversal::lastWithin(*m0));
+    EXPECT_EQ(*m0->firstChild(), FlatTreeTraversal::lastWithinOrSelf(*m0));
 
-    EXPECT_EQ(m10->firstChild(), ComposedTreeTraversal::lastWithin(*m1));
-    EXPECT_EQ(*m10->firstChild(), ComposedTreeTraversal::lastWithinOrSelf(*m1));
+    EXPECT_EQ(m10->firstChild(), FlatTreeTraversal::lastWithin(*m1));
+    EXPECT_EQ(*m10->firstChild(), FlatTreeTraversal::lastWithinOrSelf(*m1));
 
-    EXPECT_EQ(nullptr, ComposedTreeTraversal::lastWithin(*m2));
-    EXPECT_EQ(*m2, ComposedTreeTraversal::lastWithinOrSelf(*m2));
+    EXPECT_EQ(nullptr, FlatTreeTraversal::lastWithin(*m2));
+    EXPECT_EQ(*m2, FlatTreeTraversal::lastWithinOrSelf(*m2));
 
-    EXPECT_EQ(s11->firstChild(), ComposedTreeTraversal::lastWithin(*s11));
-    EXPECT_EQ(*s11->firstChild(), ComposedTreeTraversal::lastWithinOrSelf(*s11));
+    EXPECT_EQ(s11->firstChild(), FlatTreeTraversal::lastWithin(*s11));
+    EXPECT_EQ(*s11->firstChild(), FlatTreeTraversal::lastWithinOrSelf(*s11));
 
-    EXPECT_EQ(m10->firstChild(), ComposedTreeTraversal::lastWithin(*s12));
-    EXPECT_EQ(*m10->firstChild(), ComposedTreeTraversal::lastWithinOrSelf(*s12));
+    EXPECT_EQ(m10->firstChild(), FlatTreeTraversal::lastWithin(*s12));
+    EXPECT_EQ(*m10->firstChild(), FlatTreeTraversal::lastWithinOrSelf(*s12));
 }
 
-TEST_F(ComposedTreeTraversalTest, previousPostOrder)
+TEST_F(FlatTreeTraversalTest, previousPostOrder)
 {
     const char* mainHTML =
         "<div id='m0'>m0</div>"
@@ -379,24 +379,24 @@
     RefPtrWillBeRawPtr<Element> s12 = shadowRoot->querySelector("#s12", ASSERT_NO_EXCEPTION);
     RefPtrWillBeRawPtr<Element> s120 = shadowRoot->querySelector("#s120", ASSERT_NO_EXCEPTION);
 
-    EXPECT_EQ(*m0->firstChild(), ComposedTreeTraversal::previousPostOrder(*m0));
-    EXPECT_EQ(*s12, ComposedTreeTraversal::previousPostOrder(*m1));
-    EXPECT_EQ(*m10->firstChild(), ComposedTreeTraversal::previousPostOrder(*m10));
-    EXPECT_EQ(*s120, ComposedTreeTraversal::previousPostOrder(*m10->firstChild()));
-    EXPECT_EQ(*s120, ComposedTreeTraversal::previousPostOrder(*m10->firstChild(), s12.get()));
-    EXPECT_EQ(*m11->firstChild(), ComposedTreeTraversal::previousPostOrder(*m11));
-    EXPECT_EQ(*m0, ComposedTreeTraversal::previousPostOrder(*m11->firstChild()));
-    EXPECT_EQ(nullptr, ComposedTreeTraversal::previousPostOrder(*m11->firstChild(), m11.get()));
-    EXPECT_EQ(*m2->firstChild(), ComposedTreeTraversal::previousPostOrder(*m2));
+    EXPECT_EQ(*m0->firstChild(), FlatTreeTraversal::previousPostOrder(*m0));
+    EXPECT_EQ(*s12, FlatTreeTraversal::previousPostOrder(*m1));
+    EXPECT_EQ(*m10->firstChild(), FlatTreeTraversal::previousPostOrder(*m10));
+    EXPECT_EQ(*s120, FlatTreeTraversal::previousPostOrder(*m10->firstChild()));
+    EXPECT_EQ(*s120, FlatTreeTraversal::previousPostOrder(*m10->firstChild(), s12.get()));
+    EXPECT_EQ(*m11->firstChild(), FlatTreeTraversal::previousPostOrder(*m11));
+    EXPECT_EQ(*m0, FlatTreeTraversal::previousPostOrder(*m11->firstChild()));
+    EXPECT_EQ(nullptr, FlatTreeTraversal::previousPostOrder(*m11->firstChild(), m11.get()));
+    EXPECT_EQ(*m2->firstChild(), FlatTreeTraversal::previousPostOrder(*m2));
 
-    EXPECT_EQ(*s11->firstChild(), ComposedTreeTraversal::previousPostOrder(*s11));
-    EXPECT_EQ(*m10, ComposedTreeTraversal::previousPostOrder(*s12));
-    EXPECT_EQ(*s120->firstChild(), ComposedTreeTraversal::previousPostOrder(*s120));
-    EXPECT_EQ(*s11, ComposedTreeTraversal::previousPostOrder(*s120->firstChild()));
-    EXPECT_EQ(nullptr, ComposedTreeTraversal::previousPostOrder(*s120->firstChild(), s12.get()));
+    EXPECT_EQ(*s11->firstChild(), FlatTreeTraversal::previousPostOrder(*s11));
+    EXPECT_EQ(*m10, FlatTreeTraversal::previousPostOrder(*s12));
+    EXPECT_EQ(*s120->firstChild(), FlatTreeTraversal::previousPostOrder(*s120));
+    EXPECT_EQ(*s11, FlatTreeTraversal::previousPostOrder(*s120->firstChild()));
+    EXPECT_EQ(nullptr, FlatTreeTraversal::previousPostOrder(*s120->firstChild(), s12.get()));
 }
 
-TEST_F(ComposedTreeTraversalTest, nextSiblingNotInDocumentComposedTree)
+TEST_F(FlatTreeTraversalTest, nextSiblingNotInDocumentFlatTree)
 {
     const char* mainHTML =
         "<div id='m0'>m0</div>"
@@ -412,11 +412,11 @@
     RefPtrWillBeRawPtr<Element> body = document().body();
     RefPtrWillBeRawPtr<Element> m10 = body->querySelector("#m10", ASSERT_NO_EXCEPTION);
 
-    EXPECT_EQ(nullptr, ComposedTreeTraversal::nextSibling(*m10));
-    EXPECT_EQ(nullptr, ComposedTreeTraversal::previousSibling(*m10));
+    EXPECT_EQ(nullptr, FlatTreeTraversal::nextSibling(*m10));
+    EXPECT_EQ(nullptr, FlatTreeTraversal::previousSibling(*m10));
 }
 
-TEST_F(ComposedTreeTraversalTest, redistribution)
+TEST_F(FlatTreeTraversalTest, redistribution)
 {
     const char* mainHTML =
         "<div id='m0'>m0</div>"
@@ -450,16 +450,16 @@
     RefPtrWillBeRawPtr<ShadowRoot> shadowRoot2 = s1->openShadowRoot();
     RefPtrWillBeRawPtr<Element> s21 = shadowRoot2->querySelector("#s21", ASSERT_NO_EXCEPTION);
 
-    EXPECT_EQ(s21.get(), ComposedTreeTraversal::nextSibling(*m10));
-    EXPECT_EQ(m10.get(), ComposedTreeTraversal::previousSibling(*s21));
+    EXPECT_EQ(s21.get(), FlatTreeTraversal::nextSibling(*m10));
+    EXPECT_EQ(m10.get(), FlatTreeTraversal::previousSibling(*s21));
 
-    // ComposedTreeTraversal::traverseSiblings does not work for a node which is not in a document composed tree.
-    // e.g. The following test fails. The result of ComposedTreeTraversal::previousSibling(*m11)) will be #m10, instead of nullptr.
+    // FlatTreeTraversal::traverseSiblings does not work for a node which is not in a document flat tree.
+    // e.g. The following test fails. The result of FlatTreeTraversal::previousSibling(*m11)) will be #m10, instead of nullptr.
     // RefPtrWillBeRawPtr<Element> m11 = body->querySelector("#m11", ASSERT_NO_EXCEPTION);
-    // EXPECT_EQ(nullptr, ComposedTreeTraversal::previousSibling(*m11));
+    // EXPECT_EQ(nullptr, FlatTreeTraversal::previousSibling(*m11));
 }
 
-TEST_F(ComposedTreeTraversalTest, v1Simple)
+TEST_F(FlatTreeTraversalTest, v1Simple)
 {
     const char* mainHTML =
         "<div id='host'>"
@@ -487,13 +487,13 @@
 
     EXPECT_TRUE(slot1);
     EXPECT_TRUE(slot2);
-    EXPECT_EQ(shadowChild1.get(), ComposedTreeTraversal::firstChild(*host));
-    EXPECT_EQ(child1.get(), ComposedTreeTraversal::nextSibling(*shadowChild1));
-    EXPECT_EQ(child2.get(), ComposedTreeTraversal::nextSibling(*child1));
-    EXPECT_EQ(shadowChild2.get(), ComposedTreeTraversal::nextSibling(*child2));
+    EXPECT_EQ(shadowChild1.get(), FlatTreeTraversal::firstChild(*host));
+    EXPECT_EQ(child1.get(), FlatTreeTraversal::nextSibling(*shadowChild1));
+    EXPECT_EQ(child2.get(), FlatTreeTraversal::nextSibling(*child1));
+    EXPECT_EQ(shadowChild2.get(), FlatTreeTraversal::nextSibling(*child2));
 }
 
-TEST_F(ComposedTreeTraversalTest, v1Redistribution)
+TEST_F(FlatTreeTraversalTest, v1Redistribution)
 {
     const char* mainHTML =
         "<div id='d1'>"
@@ -553,21 +553,21 @@
     EXPECT_TRUE(d1s2);
     EXPECT_TRUE(d11s1);
     EXPECT_TRUE(d11s2);
-    EXPECT_EQ(d11.get(), ComposedTreeTraversal::next(*d1));
-    EXPECT_EQ(d111.get(), ComposedTreeTraversal::next(*d11));
-    EXPECT_EQ(d2.get(), ComposedTreeTraversal::next(*d111));
-    EXPECT_EQ(d14.get(), ComposedTreeTraversal::next(*d2));
-    EXPECT_EQ(d112.get(), ComposedTreeTraversal::next(*d14));
-    EXPECT_EQ(d6.get(), ComposedTreeTraversal::next(*d112));
+    EXPECT_EQ(d11.get(), FlatTreeTraversal::next(*d1));
+    EXPECT_EQ(d111.get(), FlatTreeTraversal::next(*d11));
+    EXPECT_EQ(d2.get(), FlatTreeTraversal::next(*d111));
+    EXPECT_EQ(d14.get(), FlatTreeTraversal::next(*d2));
+    EXPECT_EQ(d112.get(), FlatTreeTraversal::next(*d14));
+    EXPECT_EQ(d6.get(), FlatTreeTraversal::next(*d112));
 
-    EXPECT_EQ(d112.get(), ComposedTreeTraversal::previous(*d6));
+    EXPECT_EQ(d112.get(), FlatTreeTraversal::previous(*d6));
 
-    EXPECT_EQ(d11.get(), ComposedTreeTraversal::parent(*d111));
-    EXPECT_EQ(d11.get(), ComposedTreeTraversal::parent(*d112));
-    EXPECT_EQ(d11.get(), ComposedTreeTraversal::parent(*d2));
-    EXPECT_EQ(d11.get(), ComposedTreeTraversal::parent(*d14));
-    EXPECT_EQ(nullptr, ComposedTreeTraversal::parent(*d3));
-    EXPECT_EQ(nullptr, ComposedTreeTraversal::parent(*d4));
+    EXPECT_EQ(d11.get(), FlatTreeTraversal::parent(*d111));
+    EXPECT_EQ(d11.get(), FlatTreeTraversal::parent(*d112));
+    EXPECT_EQ(d11.get(), FlatTreeTraversal::parent(*d2));
+    EXPECT_EQ(d11.get(), FlatTreeTraversal::parent(*d14));
+    EXPECT_EQ(nullptr, FlatTreeTraversal::parent(*d3));
+    EXPECT_EQ(nullptr, FlatTreeTraversal::parent(*d4));
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/EditingStrategy.cpp b/third_party/WebKit/Source/core/editing/EditingStrategy.cpp
index cdf3200f..742fbb4 100644
--- a/third_party/WebKit/Source/core/editing/EditingStrategy.cpp
+++ b/third_party/WebKit/Source/core/editing/EditingStrategy.cpp
@@ -27,10 +27,10 @@
 template <typename Traversal>
 bool EditingAlgorithm<Traversal>::isEmptyNonEditableNodeInEditable(const Node* node)
 {
-    // Editability is defined the DOM tree rather than the composed tree. For example:
+    // Editability is defined the DOM tree rather than the flat tree. For example:
     // DOM:
     //   <host><span>unedittable</span><shadowroot><div ce><content /></div></shadowroot></host>
-    // Composed Tree:
+    // Flat Tree:
     //   <host><div ce><span1>unedittable</span></div></host>
     // e.g. editing/shadow/breaking-editing-boundaries.html
     return !Traversal::hasChildren(*node) && !node->hasEditableStyle() && node->parentNode() && node->parentNode()->hasEditableStyle();
@@ -90,6 +90,6 @@
 }
 
 template class CORE_TEMPLATE_EXPORT EditingAlgorithm<NodeTraversal>;
-template class CORE_TEMPLATE_EXPORT EditingAlgorithm<ComposedTreeTraversal>;
+template class CORE_TEMPLATE_EXPORT EditingAlgorithm<FlatTreeTraversal>;
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/EditingStrategy.h b/third_party/WebKit/Source/core/editing/EditingStrategy.h
index c6256ea..3e276d6 100644
--- a/third_party/WebKit/Source/core/editing/EditingStrategy.h
+++ b/third_party/WebKit/Source/core/editing/EditingStrategy.h
@@ -7,7 +7,7 @@
 
 #include "core/CoreExport.h"
 #include "core/dom/NodeTraversal.h"
-#include "core/dom/shadow/ComposedTreeTraversal.h"
+#include "core/dom/shadow/FlatTreeTraversal.h"
 #include "wtf/Allocator.h"
 
 namespace blink {
@@ -39,12 +39,12 @@
 };
 
 extern template class CORE_EXTERN_TEMPLATE_EXPORT EditingAlgorithm<NodeTraversal>;
-extern template class CORE_EXTERN_TEMPLATE_EXPORT EditingAlgorithm<ComposedTreeTraversal>;
+extern template class CORE_EXTERN_TEMPLATE_EXPORT EditingAlgorithm<FlatTreeTraversal>;
 
 // DOM tree version of editing algorithm
 using EditingStrategy = EditingAlgorithm<NodeTraversal>;
-// Composed tree version of editing algorithm
-using EditingInComposedTreeStrategy = EditingAlgorithm<ComposedTreeTraversal>;
+// Flat tree version of editing algorithm
+using EditingInFlatTreeStrategy = EditingAlgorithm<FlatTreeTraversal>;
 
 } // namespace blink
 
diff --git a/third_party/WebKit/Source/core/editing/EditingStrategyTest.cpp b/third_party/WebKit/Source/core/editing/EditingStrategyTest.cpp
index 66469a4..cf28548b 100644
--- a/third_party/WebKit/Source/core/editing/EditingStrategyTest.cpp
+++ b/third_party/WebKit/Source/core/editing/EditingStrategyTest.cpp
@@ -26,10 +26,10 @@
     EXPECT_EQ(1, EditingStrategy::caretMaxOffset(*one->firstChild()));
     EXPECT_EQ(2, EditingStrategy::caretMaxOffset(*two->firstChild()));
 
-    EXPECT_EQ(2, EditingInComposedTreeStrategy::caretMaxOffset(*host));
-    EXPECT_EQ(1, EditingInComposedTreeStrategy::caretMaxOffset(*one));
-    EXPECT_EQ(1, EditingInComposedTreeStrategy::caretMaxOffset(*one->firstChild()));
-    EXPECT_EQ(2, EditingInComposedTreeStrategy::caretMaxOffset(*two->firstChild()));
+    EXPECT_EQ(2, EditingInFlatTreeStrategy::caretMaxOffset(*host));
+    EXPECT_EQ(1, EditingInFlatTreeStrategy::caretMaxOffset(*one));
+    EXPECT_EQ(1, EditingInFlatTreeStrategy::caretMaxOffset(*one->firstChild()));
+    EXPECT_EQ(2, EditingInFlatTreeStrategy::caretMaxOffset(*two->firstChild()));
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/EditingUtilities.cpp b/third_party/WebKit/Source/core/editing/EditingUtilities.cpp
index cf875b8..fed03353 100644
--- a/third_party/WebKit/Source/core/editing/EditingUtilities.cpp
+++ b/third_party/WebKit/Source/core/editing/EditingUtilities.cpp
@@ -167,9 +167,9 @@
     return comparePositions<NodeTraversal>(containerA, offsetA, containerB, offsetB, disconnected);
 }
 
-int comparePositionsInComposedTree(Node* containerA, int offsetA, Node* containerB, int offsetB, bool* disconnected)
+int comparePositionsInFlatTree(Node* containerA, int offsetA, Node* containerB, int offsetB, bool* disconnected)
 {
-    return comparePositions<ComposedTreeTraversal>(containerA, offsetA, containerB, offsetB, disconnected);
+    return comparePositions<FlatTreeTraversal>(containerA, offsetA, containerB, offsetB, disconnected);
 }
 
 // Compare two positions, taking into account the possibility that one or both
@@ -240,7 +240,7 @@
     return highestRoot;
 }
 
-ContainerNode* highestEditableRoot(const PositionInComposedTree& position, EditableType editableType)
+ContainerNode* highestEditableRoot(const PositionInFlatTree& position, EditableType editableType)
 {
     return highestEditableRoot(toPositionInDOMTree(position), editableType);
 }
@@ -263,7 +263,7 @@
     return node->hasEditableStyle(editableType);
 }
 
-bool isEditablePosition(const PositionInComposedTree& p, EditableType editableType, EUpdateStyle updateStyle)
+bool isEditablePosition(const PositionInFlatTree& p, EditableType editableType, EUpdateStyle updateStyle)
 {
     return isEditablePosition(toPositionInDOMTree(p), editableType, updateStyle);
 }
@@ -299,7 +299,7 @@
     return node->rootEditableElement(editableType);
 }
 
-Element* rootEditableElementOf(const PositionInComposedTree& p, EditableType editableType)
+Element* rootEditableElementOf(const PositionInFlatTree& p, EditableType editableType)
 {
     return rootEditableElementOf(toPositionInDOMTree(p), editableType);
 }
@@ -348,9 +348,9 @@
     return nextCandidateAlgorithm<EditingStrategy>(position);
 }
 
-PositionInComposedTree nextCandidate(const PositionInComposedTree& position)
+PositionInFlatTree nextCandidate(const PositionInFlatTree& position)
 {
-    return nextCandidateAlgorithm<EditingInComposedTreeStrategy>(position);
+    return nextCandidateAlgorithm<EditingInFlatTreeStrategy>(position);
 }
 
 // |nextVisuallyDistinctCandidate| is similar to |nextCandidate| except
@@ -383,9 +383,9 @@
     return nextVisuallyDistinctCandidateAlgorithm<EditingStrategy>(position);
 }
 
-PositionInComposedTree nextVisuallyDistinctCandidate(const PositionInComposedTree& position)
+PositionInFlatTree nextVisuallyDistinctCandidate(const PositionInFlatTree& position)
 {
-    return nextVisuallyDistinctCandidateAlgorithm<EditingInComposedTreeStrategy>(position);
+    return nextVisuallyDistinctCandidateAlgorithm<EditingInFlatTreeStrategy>(position);
 }
 
 template <typename Strategy>
@@ -411,9 +411,9 @@
     return previousCandidateAlgorithm<EditingStrategy>(position);
 }
 
-PositionInComposedTree previousCandidate(const PositionInComposedTree& position)
+PositionInFlatTree previousCandidate(const PositionInFlatTree& position)
 {
-    return previousCandidateAlgorithm<EditingInComposedTreeStrategy>(position);
+    return previousCandidateAlgorithm<EditingInFlatTreeStrategy>(position);
 }
 
 // |previousVisuallyDistinctCandidate| is similar to |previousCandidate| except
@@ -446,9 +446,9 @@
     return previousVisuallyDistinctCandidateAlgorithm<EditingStrategy>(position);
 }
 
-PositionInComposedTree previousVisuallyDistinctCandidate(const PositionInComposedTree& position)
+PositionInFlatTree previousVisuallyDistinctCandidate(const PositionInFlatTree& position)
 {
-    return previousVisuallyDistinctCandidateAlgorithm<EditingInComposedTreeStrategy>(position);
+    return previousVisuallyDistinctCandidateAlgorithm<EditingInFlatTreeStrategy>(position);
 }
 
 VisiblePosition firstEditableVisiblePositionAfterPositionInRoot(const Position& position, ContainerNode& highestRoot)
@@ -456,7 +456,7 @@
     return createVisiblePosition(firstEditablePositionAfterPositionInRoot(position, highestRoot));
 }
 
-VisiblePositionInComposedTree firstEditableVisiblePositionAfterPositionInRoot(const PositionInComposedTree& position, ContainerNode& highestRoot)
+VisiblePositionInFlatTree firstEditableVisiblePositionAfterPositionInRoot(const PositionInFlatTree& position, ContainerNode& highestRoot)
 {
     return createVisiblePosition(firstEditablePositionAfterPositionInRoot(position, highestRoot));
 }
@@ -492,9 +492,9 @@
     return firstEditablePositionAfterPositionInRootAlgorithm<EditingStrategy>(position, highestRoot);
 }
 
-PositionInComposedTree firstEditablePositionAfterPositionInRoot(const PositionInComposedTree& position, Node& highestRoot)
+PositionInFlatTree firstEditablePositionAfterPositionInRoot(const PositionInFlatTree& position, Node& highestRoot)
 {
-    return firstEditablePositionAfterPositionInRootAlgorithm<EditingInComposedTreeStrategy>(position, highestRoot);
+    return firstEditablePositionAfterPositionInRootAlgorithm<EditingInFlatTreeStrategy>(position, highestRoot);
 }
 
 VisiblePosition lastEditableVisiblePositionBeforePositionInRoot(const Position& position, ContainerNode& highestRoot)
@@ -502,7 +502,7 @@
     return createVisiblePosition(lastEditablePositionBeforePositionInRoot(position, highestRoot));
 }
 
-VisiblePositionInComposedTree lastEditableVisiblePositionBeforePositionInRoot(const PositionInComposedTree& position, ContainerNode& highestRoot)
+VisiblePositionInFlatTree lastEditableVisiblePositionBeforePositionInRoot(const PositionInFlatTree& position, ContainerNode& highestRoot)
 {
     return createVisiblePosition(lastEditablePositionBeforePositionInRoot(position, highestRoot));
 }
@@ -537,9 +537,9 @@
     return lastEditablePositionBeforePositionInRootAlgorithm<EditingStrategy>(position, highestRoot);
 }
 
-PositionInComposedTree lastEditablePositionBeforePositionInRoot(const PositionInComposedTree& position, Node& highestRoot)
+PositionInFlatTree lastEditablePositionBeforePositionInRoot(const PositionInFlatTree& position, Node& highestRoot)
 {
-    return lastEditablePositionBeforePositionInRootAlgorithm<EditingInComposedTreeStrategy>(position, highestRoot);
+    return lastEditablePositionBeforePositionInRootAlgorithm<EditingInFlatTreeStrategy>(position, highestRoot);
 }
 
 int uncheckedPreviousOffset(const Node* n, int current)
@@ -603,9 +603,9 @@
     return previousPositionOfAlgorithm<EditingStrategy>(position, moveType);
 }
 
-PositionInComposedTree previousPositionOf(const PositionInComposedTree& position, PositionMoveType moveType)
+PositionInFlatTree previousPositionOf(const PositionInFlatTree& position, PositionMoveType moveType)
 {
-    return previousPositionOfAlgorithm<EditingInComposedTreeStrategy>(position, moveType);
+    return previousPositionOfAlgorithm<EditingInFlatTreeStrategy>(position, moveType);
 }
 
 template <typename Strategy>
@@ -644,9 +644,9 @@
     return nextPositionOfAlgorithm<EditingStrategy>(position, moveType);
 }
 
-PositionInComposedTree nextPositionOf(const PositionInComposedTree& position, PositionMoveType moveType)
+PositionInFlatTree nextPositionOf(const PositionInFlatTree& position, PositionMoveType moveType)
 {
-    return nextPositionOfAlgorithm<EditingInComposedTreeStrategy>(position, moveType);
+    return nextPositionOfAlgorithm<EditingInFlatTreeStrategy>(position, moveType);
 }
 
 bool isEnclosingBlock(const Node* node)
@@ -682,9 +682,9 @@
     return enclosingBlockAlgorithm<EditingStrategy>(position, rule);
 }
 
-Element* enclosingBlock(const PositionInComposedTree& position, EditingBoundaryCrossingRule rule)
+Element* enclosingBlock(const PositionInFlatTree& position, EditingBoundaryCrossingRule rule)
 {
-    return enclosingBlockAlgorithm<EditingInComposedTreeStrategy>(position, rule);
+    return enclosingBlockAlgorithm<EditingInFlatTreeStrategy>(position, rule);
 }
 
 Element* enclosingBlockFlowElement(Node& node)
@@ -725,9 +725,9 @@
     return directionOfEnclosingBlockAlgorithm<EditingStrategy>(position);
 }
 
-TextDirection directionOfEnclosingBlock(const PositionInComposedTree& position)
+TextDirection directionOfEnclosingBlock(const PositionInFlatTree& position)
 {
-    return directionOfEnclosingBlockAlgorithm<EditingInComposedTreeStrategy>(position);
+    return directionOfEnclosingBlockAlgorithm<EditingInFlatTreeStrategy>(position);
 }
 
 TextDirection primaryDirectionOf(const Node& node)
@@ -882,9 +882,9 @@
     return isFirstPositionAfterTableAlgorithm<EditingStrategy>(visiblePosition);
 }
 
-Element* isFirstPositionAfterTable(const VisiblePositionInComposedTree& visiblePosition)
+Element* isFirstPositionAfterTable(const VisiblePositionInFlatTree& visiblePosition)
 {
-    return isFirstPositionAfterTableAlgorithm<EditingInComposedTreeStrategy>(visiblePosition);
+    return isFirstPositionAfterTableAlgorithm<EditingInFlatTreeStrategy>(visiblePosition);
 }
 
 Element* isLastPositionBeforeTable(const VisiblePosition& visiblePosition)
@@ -1029,9 +1029,9 @@
     return enclosingNodeOfTypeAlgorithm<EditingStrategy>(p, nodeIsOfType, rule);
 }
 
-Node* enclosingNodeOfType(const PositionInComposedTree& p, bool (*nodeIsOfType)(const Node*), EditingBoundaryCrossingRule rule)
+Node* enclosingNodeOfType(const PositionInFlatTree& p, bool (*nodeIsOfType)(const Node*), EditingBoundaryCrossingRule rule)
 {
-    return enclosingNodeOfTypeAlgorithm<EditingInComposedTreeStrategy>(p, nodeIsOfType, rule);
+    return enclosingNodeOfTypeAlgorithm<EditingInFlatTreeStrategy>(p, nodeIsOfType, rule);
 }
 
 Node* highestEnclosingNodeOfType(const Position& p, bool (*nodeIsOfType)(const Node*), EditingBoundaryCrossingRule rule, Node* stayWithin)
@@ -1537,9 +1537,9 @@
     return normalizeRangeAlgorithm<EditingStrategy>(range);
 }
 
-EphemeralRangeInComposedTree normalizeRange(const EphemeralRangeInComposedTree& range)
+EphemeralRangeInFlatTree normalizeRange(const EphemeralRangeInFlatTree& range)
 {
-    return normalizeRangeAlgorithm<EditingInComposedTreeStrategy>(range);
+    return normalizeRangeAlgorithm<EditingInFlatTreeStrategy>(range);
 }
 
 VisiblePosition visiblePositionForIndex(int index, ContainerNode* scope)
diff --git a/third_party/WebKit/Source/core/editing/EditingUtilities.h b/third_party/WebKit/Source/core/editing/EditingUtilities.h
index c734a8d..66f449e 100644
--- a/third_party/WebKit/Source/core/editing/EditingUtilities.h
+++ b/third_party/WebKit/Source/core/editing/EditingUtilities.h
@@ -69,7 +69,7 @@
 // defiance of editing boundaries. This returns a Document if designMode="on"
 // and the specified Position is not in the <body>.
 CORE_EXPORT ContainerNode* highestEditableRoot(const Position&, EditableType = ContentIsEditable);
-ContainerNode* highestEditableRoot(const PositionInComposedTree&, EditableType = ContentIsEditable);
+ContainerNode* highestEditableRoot(const PositionInFlatTree&, EditableType = ContentIsEditable);
 
 Node* highestEnclosingNodeOfType(const Position&, bool (*nodeIsOfType)(const Node*),
     EditingBoundaryCrossingRule = CannotCrossEditingBoundary, Node* stayWithin = nullptr);
@@ -77,7 +77,7 @@
 
 Element* enclosingBlock(Node*, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
 CORE_EXPORT Element* enclosingBlock(const Position&, EditingBoundaryCrossingRule);
-CORE_EXPORT Element* enclosingBlock(const PositionInComposedTree&, EditingBoundaryCrossingRule);
+CORE_EXPORT Element* enclosingBlock(const PositionInFlatTree&, EditingBoundaryCrossingRule);
 Element* enclosingBlockFlowElement(Node&); // Deprecated, use enclosingBlock instead.
 bool inSameContainingBlockFlowElement(Node*, Node*);
 Element* enclosingTableCell(const Position&);
@@ -89,12 +89,12 @@
 // Element. Otherwise, editability doesn't matter.
 Element* enclosingElementWithTag(const Position&, const QualifiedName&);
 CORE_EXPORT Node* enclosingNodeOfType(const Position&, bool (*nodeIsOfType)(const Node*), EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
-CORE_EXPORT Node* enclosingNodeOfType(const PositionInComposedTree&, bool (*nodeIsOfType)(const Node*), EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
+CORE_EXPORT Node* enclosingNodeOfType(const PositionInFlatTree&, bool (*nodeIsOfType)(const Node*), EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
 
 HTMLSpanElement* tabSpanElement(const Node*);
 Element* isLastPositionBeforeTable(const VisiblePosition&);
 CORE_EXPORT Element* isFirstPositionAfterTable(const VisiblePosition&);
-CORE_EXPORT Element* isFirstPositionAfterTable(const VisiblePositionInComposedTree&);
+CORE_EXPORT Element* isFirstPositionAfterTable(const VisiblePositionInFlatTree&);
 
 // Returns the next leaf node or nullptr if there are no more.
 // Delivers leaf nodes as if the whole DOM tree were a linear chain of its leaf nodes.
@@ -112,9 +112,9 @@
     return NodeTraversal::parentOrShadowHostNode(node);
 }
 template <>
-inline ContainerNode* parentCrossingShadowBoundaries<EditingInComposedTreeStrategy>(const Node& node)
+inline ContainerNode* parentCrossingShadowBoundaries<EditingInFlatTreeStrategy>(const Node& node)
 {
-    return ComposedTreeTraversal::parent(node);
+    return FlatTreeTraversal::parent(node);
 }
 
 // boolean functions on Node
@@ -156,7 +156,7 @@
 bool nodeIsUserSelectAll(const Node*);
 bool isTextSecurityNode(const Node*);
 CORE_EXPORT TextDirection directionOfEnclosingBlock(const Position&);
-CORE_EXPORT TextDirection directionOfEnclosingBlock(const PositionInComposedTree&);
+CORE_EXPORT TextDirection directionOfEnclosingBlock(const PositionInFlatTree&);
 CORE_EXPORT TextDirection primaryDirectionOf(const Node&);
 
 // -------------------------------------------------------------------------
@@ -166,14 +166,14 @@
 // Functions returning Position
 
 Position nextCandidate(const Position&);
-PositionInComposedTree nextCandidate(const PositionInComposedTree&);
+PositionInFlatTree nextCandidate(const PositionInFlatTree&);
 Position previousCandidate(const Position&);
-PositionInComposedTree previousCandidate(const PositionInComposedTree&);
+PositionInFlatTree previousCandidate(const PositionInFlatTree&);
 
 CORE_EXPORT Position nextVisuallyDistinctCandidate(const Position&);
-CORE_EXPORT PositionInComposedTree nextVisuallyDistinctCandidate(const PositionInComposedTree&);
+CORE_EXPORT PositionInFlatTree nextVisuallyDistinctCandidate(const PositionInFlatTree&);
 Position previousVisuallyDistinctCandidate(const Position&);
-PositionInComposedTree previousVisuallyDistinctCandidate(const PositionInComposedTree&);
+PositionInFlatTree previousVisuallyDistinctCandidate(const PositionInFlatTree&);
 
 Position positionBeforeContainingSpecialElement(const Position&, HTMLElement** containingSpecialElement = nullptr);
 Position positionAfterContainingSpecialElement(const Position&, HTMLElement** containingSpecialElement = nullptr);
@@ -190,8 +190,8 @@
 
 CORE_EXPORT Position firstEditablePositionAfterPositionInRoot(const Position&, Node&);
 CORE_EXPORT Position lastEditablePositionBeforePositionInRoot(const Position&, Node&);
-CORE_EXPORT PositionInComposedTree firstEditablePositionAfterPositionInRoot(const PositionInComposedTree&, Node&);
-CORE_EXPORT PositionInComposedTree lastEditablePositionBeforePositionInRoot(const PositionInComposedTree&, Node&);
+CORE_EXPORT PositionInFlatTree firstEditablePositionAfterPositionInRoot(const PositionInFlatTree&, Node&);
+CORE_EXPORT PositionInFlatTree lastEditablePositionBeforePositionInRoot(const PositionInFlatTree&, Node&);
 
 // Move up or down the DOM by one position.
 // Offsets are computed using layout text for nodes that have layoutObjects -
@@ -199,8 +199,8 @@
 // a single user-visible character if a ligature is formed.
 CORE_EXPORT Position previousPositionOf(const Position&, PositionMoveType);
 CORE_EXPORT Position nextPositionOf(const Position&, PositionMoveType);
-CORE_EXPORT PositionInComposedTree previousPositionOf(const PositionInComposedTree&, PositionMoveType);
-CORE_EXPORT PositionInComposedTree nextPositionOf(const PositionInComposedTree&, PositionMoveType);
+CORE_EXPORT PositionInFlatTree previousPositionOf(const PositionInFlatTree&, PositionMoveType);
+CORE_EXPORT PositionInFlatTree nextPositionOf(const PositionInFlatTree&, PositionMoveType);
 
 CORE_EXPORT int uncheckedPreviousOffset(const Node*, int current);
 CORE_EXPORT int uncheckedNextOffset(const Node*, int current);
@@ -210,7 +210,7 @@
 // |disconnected| is optional output parameter having true if specified
 // positions don't have common ancestor.
 int comparePositionsInDOMTree(Node* containerA, int offsetA, Node* containerB, int offsetB, bool* disconnected = nullptr);
-int comparePositionsInComposedTree(Node* containerA, int offsetA, Node* containerB, int offsetB, bool* disconnected = nullptr);
+int comparePositionsInFlatTree(Node* containerA, int offsetA, Node* containerB, int offsetB, bool* disconnected = nullptr);
 int comparePositions(const Position&, const Position&);
 int comparePositions(const PositionWithAffinity&, const PositionWithAffinity&);
 
@@ -222,7 +222,7 @@
 // should make it clear that that is the contract.
 // FIXME: isRichlyEditablePosition should also take EUpdateStyle.
 CORE_EXPORT bool isEditablePosition(const Position&, EditableType = ContentIsEditable, EUpdateStyle = UpdateStyle);
-bool isEditablePosition(const PositionInComposedTree&, EditableType = ContentIsEditable, EUpdateStyle = UpdateStyle);
+bool isEditablePosition(const PositionInFlatTree&, EditableType = ContentIsEditable, EUpdateStyle = UpdateStyle);
 bool isRichlyEditablePosition(const Position&, EditableType = ContentIsEditable);
 bool lineBreakExistsAtPosition(const Position&);
 bool isAtUnsplittableElement(const Position&);
@@ -246,13 +246,13 @@
 // describes what this function returns, since it returns a position before
 // specified position due by canonicalization.
 CORE_EXPORT VisiblePosition firstEditableVisiblePositionAfterPositionInRoot(const Position&, ContainerNode&);
-CORE_EXPORT VisiblePositionInComposedTree firstEditableVisiblePositionAfterPositionInRoot(const PositionInComposedTree&, ContainerNode&);
+CORE_EXPORT VisiblePositionInFlatTree firstEditableVisiblePositionAfterPositionInRoot(const PositionInFlatTree&, ContainerNode&);
 // TODO(yosin) We should rename
 // |lastEditableVisiblePositionBeforePositionInRoot()| to a better name which
 // describes what this function returns, since it returns a position after
 // specified position due by canonicalization.
 CORE_EXPORT VisiblePosition lastEditableVisiblePositionBeforePositionInRoot(const Position&, ContainerNode&);
-CORE_EXPORT VisiblePositionInComposedTree lastEditableVisiblePositionBeforePositionInRoot(const PositionInComposedTree&, ContainerNode&);
+CORE_EXPORT VisiblePositionInFlatTree lastEditableVisiblePositionBeforePositionInRoot(const PositionInFlatTree&, ContainerNode&);
 VisiblePosition visiblePositionBeforeNode(Node&);
 VisiblePosition visiblePositionAfterNode(Node&);
 
@@ -263,7 +263,7 @@
 int indexForVisiblePosition(const VisiblePosition&, RefPtrWillBeRawPtr<ContainerNode>& scope);
 EphemeralRange makeRange(const VisiblePosition&, const VisiblePosition&);
 EphemeralRange normalizeRange(const EphemeralRange&);
-EphemeralRangeInComposedTree normalizeRange(const EphemeralRangeInComposedTree&);
+EphemeralRangeInFlatTree normalizeRange(const EphemeralRangeInFlatTree&);
 VisiblePosition visiblePositionForIndex(int index, ContainerNode* scope);
 
 // -------------------------------------------------------------------------
@@ -289,7 +289,7 @@
 PassRefPtrWillBeRawPtr<HTMLSpanElement> createTabSpanElement(Document&, const String& tabText);
 
 Element* rootEditableElementOf(const Position&, EditableType = ContentIsEditable);
-Element* rootEditableElementOf(const PositionInComposedTree&, EditableType = ContentIsEditable);
+Element* rootEditableElementOf(const PositionInFlatTree&, EditableType = ContentIsEditable);
 Element* rootEditableElementOf(const VisiblePosition&);
 Element* unsplittableElementForPosition(const Position&);
 
diff --git a/third_party/WebKit/Source/core/editing/EditingUtilitiesTest.cpp b/third_party/WebKit/Source/core/editing/EditingUtilitiesTest.cpp
index e5f73125..eb1a159 100644
--- a/third_party/WebKit/Source/core/editing/EditingUtilitiesTest.cpp
+++ b/third_party/WebKit/Source/core/editing/EditingUtilitiesTest.cpp
@@ -22,7 +22,7 @@
     Node* one = document().getElementById("one");
 
     EXPECT_EQ(LTR, directionOfEnclosingBlock(Position(one, 0)));
-    EXPECT_EQ(RTL, directionOfEnclosingBlock(PositionInComposedTree(one, 0)));
+    EXPECT_EQ(RTL, directionOfEnclosingBlock(PositionInFlatTree(one, 0)));
 }
 
 TEST_F(EditingUtilitiesTest, firstEditablePositionAfterPositionInRoot)
@@ -40,13 +40,13 @@
     EXPECT_EQ(Position(one, 0), firstEditablePositionAfterPositionInRoot(Position(one, 0), *host));
     EXPECT_EQ(Position(one->firstChild(), 0), firstEditableVisiblePositionAfterPositionInRoot(Position(one, 0), *host).deepEquivalent());
 
-    EXPECT_EQ(PositionInComposedTree(one, 0), firstEditablePositionAfterPositionInRoot(PositionInComposedTree(one, 0), *host));
-    EXPECT_EQ(PositionInComposedTree(two->firstChild(), 2), firstEditableVisiblePositionAfterPositionInRoot(PositionInComposedTree(one, 0), *host).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(one, 0), firstEditablePositionAfterPositionInRoot(PositionInFlatTree(one, 0), *host));
+    EXPECT_EQ(PositionInFlatTree(two->firstChild(), 2), firstEditableVisiblePositionAfterPositionInRoot(PositionInFlatTree(one, 0), *host).deepEquivalent());
 
     EXPECT_EQ(Position::firstPositionInNode(host), firstEditablePositionAfterPositionInRoot(Position(three, 0), *host));
     EXPECT_EQ(Position(one->firstChild(), 0), firstEditableVisiblePositionAfterPositionInRoot(Position(three, 0), *host).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree::afterNode(host), firstEditablePositionAfterPositionInRoot(PositionInComposedTree(three, 0), *host));
-    EXPECT_EQ(PositionInComposedTree::lastPositionInNode(host), firstEditableVisiblePositionAfterPositionInRoot(PositionInComposedTree(three, 0), *host).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree::afterNode(host), firstEditablePositionAfterPositionInRoot(PositionInFlatTree(three, 0), *host));
+    EXPECT_EQ(PositionInFlatTree::lastPositionInNode(host), firstEditableVisiblePositionAfterPositionInRoot(PositionInFlatTree(three, 0), *host).deepEquivalent());
 }
 
 TEST_F(EditingUtilitiesTest, enclosingBlock)
@@ -61,7 +61,7 @@
     Node* three = shadowRoot->getElementById("three");
 
     EXPECT_EQ(host, enclosingBlock(Position(one, 0), CannotCrossEditingBoundary));
-    EXPECT_EQ(three, enclosingBlock(PositionInComposedTree(one, 0), CannotCrossEditingBoundary));
+    EXPECT_EQ(three, enclosingBlock(PositionInFlatTree(one, 0), CannotCrossEditingBoundary));
 }
 
 TEST_F(EditingUtilitiesTest, enclosingNodeOfType)
@@ -76,7 +76,7 @@
     Node* three = shadowRoot->getElementById("three");
 
     EXPECT_EQ(host, enclosingNodeOfType(Position(one, 0), isEnclosingBlock));
-    EXPECT_EQ(three, enclosingNodeOfType(PositionInComposedTree(one, 0), isEnclosingBlock));
+    EXPECT_EQ(three, enclosingNodeOfType(PositionInFlatTree(one, 0), isEnclosingBlock));
 }
 
 TEST_F(EditingUtilitiesTest, isEditablePositionWithTable)
@@ -108,19 +108,19 @@
     Node* table = document().getElementById("table");
 
     EXPECT_EQ(table, isFirstPositionAfterTable(createVisiblePosition(Position::afterNode(table))));
-    EXPECT_EQ(table, isFirstPositionAfterTable(createVisiblePosition(PositionInComposedTree::afterNode(table))));
+    EXPECT_EQ(table, isFirstPositionAfterTable(createVisiblePosition(PositionInFlatTree::afterNode(table))));
 
     EXPECT_EQ(table, isFirstPositionAfterTable(createVisiblePosition(Position::lastPositionInNode(table))));
-    EXPECT_EQ(table, isFirstPositionAfterTable(createVisiblePosition(PositionInComposedTree::lastPositionInNode(table))));
+    EXPECT_EQ(table, isFirstPositionAfterTable(createVisiblePosition(PositionInFlatTree::lastPositionInNode(table))));
 
     EXPECT_EQ(nullptr, isFirstPositionAfterTable(createVisiblePosition(Position(host, 2))));
-    EXPECT_EQ(table, isFirstPositionAfterTable(createVisiblePosition(PositionInComposedTree(host, 2))));
+    EXPECT_EQ(table, isFirstPositionAfterTable(createVisiblePosition(PositionInFlatTree(host, 2))));
 
     EXPECT_EQ(nullptr, isFirstPositionAfterTable(createVisiblePosition(Position::afterNode(host))));
-    EXPECT_EQ(nullptr, isFirstPositionAfterTable(createVisiblePosition(PositionInComposedTree::afterNode(host))));
+    EXPECT_EQ(nullptr, isFirstPositionAfterTable(createVisiblePosition(PositionInFlatTree::afterNode(host))));
 
     EXPECT_EQ(nullptr, isFirstPositionAfterTable(createVisiblePosition(Position::lastPositionInNode(host))));
-    EXPECT_EQ(table, isFirstPositionAfterTable(createVisiblePosition(PositionInComposedTree::lastPositionInNode(host))));
+    EXPECT_EQ(table, isFirstPositionAfterTable(createVisiblePosition(PositionInFlatTree::lastPositionInNode(host))));
 }
 
 TEST_F(EditingUtilitiesTest, lastEditablePositionBeforePositionInRoot)
@@ -138,13 +138,13 @@
     EXPECT_EQ(Position(one, 0), lastEditablePositionBeforePositionInRoot(Position(one, 0), *host));
     EXPECT_EQ(Position(one->firstChild(), 0), lastEditableVisiblePositionBeforePositionInRoot(Position(one, 0), *host).deepEquivalent());
 
-    EXPECT_EQ(PositionInComposedTree(one, 0), lastEditablePositionBeforePositionInRoot(PositionInComposedTree(one, 0), *host));
-    EXPECT_EQ(PositionInComposedTree(two->firstChild(), 2), lastEditableVisiblePositionBeforePositionInRoot(PositionInComposedTree(one, 0), *host).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(one, 0), lastEditablePositionBeforePositionInRoot(PositionInFlatTree(one, 0), *host));
+    EXPECT_EQ(PositionInFlatTree(two->firstChild(), 2), lastEditableVisiblePositionBeforePositionInRoot(PositionInFlatTree(one, 0), *host).deepEquivalent());
 
     EXPECT_EQ(Position::firstPositionInNode(host), lastEditablePositionBeforePositionInRoot(Position(three, 0), *host));
     EXPECT_EQ(Position(one->firstChild(), 0), lastEditableVisiblePositionBeforePositionInRoot(Position(three, 0), *host).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree::firstPositionInNode(host), lastEditablePositionBeforePositionInRoot(PositionInComposedTree(three, 0), *host));
-    EXPECT_EQ(PositionInComposedTree(two->firstChild(), 0), lastEditableVisiblePositionBeforePositionInRoot(PositionInComposedTree(three, 0), *host).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree::firstPositionInNode(host), lastEditablePositionBeforePositionInRoot(PositionInFlatTree(three, 0), *host));
+    EXPECT_EQ(PositionInFlatTree(two->firstChild(), 0), lastEditableVisiblePositionBeforePositionInRoot(PositionInFlatTree(three, 0), *host).deepEquivalent());
 }
 
 TEST_F(EditingUtilitiesTest, NextNodeIndex)
@@ -157,7 +157,7 @@
     Node* two = document().getElementById("two");
 
     EXPECT_EQ(Position(host, 3), nextPositionOf(Position(two, 2), PositionMoveType::CodePoint));
-    EXPECT_EQ(PositionInComposedTree(host, 1), nextPositionOf(PositionInComposedTree(two, 2), PositionMoveType::CodePoint));
+    EXPECT_EQ(PositionInFlatTree(host, 1), nextPositionOf(PositionInFlatTree(two, 2), PositionMoveType::CodePoint));
 }
 
 TEST_F(EditingUtilitiesTest, NextVisuallyDistinctCandidate)
@@ -172,7 +172,7 @@
     Node* three = document().getElementById("three");
 
     EXPECT_EQ(Position(two->firstChild(), 1), nextVisuallyDistinctCandidate(Position(one, 1)));
-    EXPECT_EQ(PositionInComposedTree(three->firstChild(), 1), nextVisuallyDistinctCandidate(PositionInComposedTree(one, 1)));
+    EXPECT_EQ(PositionInFlatTree(three->firstChild(), 1), nextVisuallyDistinctCandidate(PositionInFlatTree(one, 1)));
 }
 
 TEST_F(EditingUtilitiesTest, AreaIdenticalElements)
diff --git a/third_party/WebKit/Source/core/editing/Editor.cpp b/third_party/WebKit/Source/core/editing/Editor.cpp
index 00872ebb..3a8bd64 100644
--- a/third_party/WebKit/Source/core/editing/Editor.cpp
+++ b/third_party/WebKit/Source/core/editing/Editor.cpp
@@ -1209,8 +1209,8 @@
 
 PassRefPtrWillBeRawPtr<Range> Editor::findStringAndScrollToVisible(const String& target, Range* range, FindOptions options)
 {
-    if (RuntimeEnabledFeatures::selectionForComposedTreeEnabled())
-        return findStringAndScrollToVisibleAlgorithm<EditingInComposedTreeStrategy>(*this, target, EphemeralRangeInComposedTree(range), options);
+    if (RuntimeEnabledFeatures::selectionForFlatTreeEnabled())
+        return findStringAndScrollToVisibleAlgorithm<EditingInFlatTreeStrategy>(*this, target, EphemeralRangeInFlatTree(range), options);
     return findStringAndScrollToVisibleAlgorithm<EditingStrategy>(*this, target, EphemeralRange(range), options);
 }
 
@@ -1303,9 +1303,9 @@
     return findRangeOfStringAlgorithm<EditingStrategy>(*frame().document(), target, reference, options);
 }
 
-PassRefPtrWillBeRawPtr<Range> Editor::findRangeOfString(const String& target, const EphemeralRangeInComposedTree& reference, FindOptions options)
+PassRefPtrWillBeRawPtr<Range> Editor::findRangeOfString(const String& target, const EphemeralRangeInFlatTree& reference, FindOptions options)
 {
-    return findRangeOfStringAlgorithm<EditingInComposedTreeStrategy>(*frame().document(), target, reference, options);
+    return findRangeOfStringAlgorithm<EditingInFlatTreeStrategy>(*frame().document(), target, reference, options);
 }
 
 void Editor::setMarkedTextMatchesAreHighlighted(bool flag)
diff --git a/third_party/WebKit/Source/core/editing/Editor.h b/third_party/WebKit/Source/core/editing/Editor.h
index 8b40cc2..35ed8d4 100644
--- a/third_party/WebKit/Source/core/editing/Editor.h
+++ b/third_party/WebKit/Source/core/editing/Editor.h
@@ -204,7 +204,7 @@
 
     PassRefPtrWillBeRawPtr<Range> findStringAndScrollToVisible(const String&, Range*, FindOptions);
     PassRefPtrWillBeRawPtr<Range> findRangeOfString(const String& target, const EphemeralRange& referenceRange, FindOptions);
-    PassRefPtrWillBeRawPtr<Range> findRangeOfString(const String& target, const EphemeralRangeInComposedTree& referenceRange, FindOptions);
+    PassRefPtrWillBeRawPtr<Range> findRangeOfString(const String& target, const EphemeralRangeInFlatTree& referenceRange, FindOptions);
 
     const VisibleSelection& mark() const; // Mark, to be used as emacs uses it.
     void setMark(const VisibleSelection&);
diff --git a/third_party/WebKit/Source/core/editing/EphemeralRange.cpp b/third_party/WebKit/Source/core/editing/EphemeralRange.cpp
index 7a373bc..e8b70d1 100644
--- a/third_party/WebKit/Source/core/editing/EphemeralRange.cpp
+++ b/third_party/WebKit/Source/core/editing/EphemeralRange.cpp
@@ -145,6 +145,6 @@
 }
 
 template class CORE_TEMPLATE_EXPORT EphemeralRangeTemplate<EditingStrategy>;
-template class CORE_TEMPLATE_EXPORT EphemeralRangeTemplate<EditingInComposedTreeStrategy>;
+template class CORE_TEMPLATE_EXPORT EphemeralRangeTemplate<EditingInFlatTreeStrategy>;
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/EphemeralRange.h b/third_party/WebKit/Source/core/editing/EphemeralRange.h
index e70ce8a..1b95928 100644
--- a/third_party/WebKit/Source/core/editing/EphemeralRange.h
+++ b/third_party/WebKit/Source/core/editing/EphemeralRange.h
@@ -88,8 +88,8 @@
 extern template class CORE_EXTERN_TEMPLATE_EXPORT EphemeralRangeTemplate<EditingStrategy>;
 using EphemeralRange = EphemeralRangeTemplate<EditingStrategy>;
 
-extern template class CORE_EXTERN_TEMPLATE_EXPORT EphemeralRangeTemplate<EditingInComposedTreeStrategy>;
-using EphemeralRangeInComposedTree = EphemeralRangeTemplate<EditingInComposedTreeStrategy>;
+extern template class CORE_EXTERN_TEMPLATE_EXPORT EphemeralRangeTemplate<EditingInFlatTreeStrategy>;
+using EphemeralRangeInFlatTree = EphemeralRangeTemplate<EditingInFlatTreeStrategy>;
 
 // Returns a newly created |Range| object from |range| or |nullptr| if
 // |range.isNull()| returns true.
diff --git a/third_party/WebKit/Source/core/editing/FindOptions.h b/third_party/WebKit/Source/core/editing/FindOptions.h
index 38897faa..083648d 100644
--- a/third_party/WebKit/Source/core/editing/FindOptions.h
+++ b/third_party/WebKit/Source/core/editing/FindOptions.h
@@ -38,7 +38,7 @@
     WrapAround = 1 << 4,
     StartInSelection = 1 << 5,
     WholeWord = 1 << 6, // WholeWord should imply AtWordStarts
-    // TODO(yosin) Once find UI works on composed tree and it doesn't use
+    // TODO(yosin) Once find UI works on flat tree and it doesn't use
     // |rangeOfString()|, we should get rid of |FindAPICall| enum member.
     FindAPICall = 1 << 7, // Used for Window.find or execCommand('find')
 };
diff --git a/third_party/WebKit/Source/core/editing/FrameSelection.cpp b/third_party/WebKit/Source/core/editing/FrameSelection.cpp
index 194d1ec..886beef 100644
--- a/third_party/WebKit/Source/core/editing/FrameSelection.cpp
+++ b/third_party/WebKit/Source/core/editing/FrameSelection.cpp
@@ -118,9 +118,9 @@
 }
 
 template <>
-VisiblePositionInComposedTree FrameSelection::originalBase<EditingInComposedTreeStrategy>() const
+VisiblePositionInFlatTree FrameSelection::originalBase<EditingInFlatTreeStrategy>() const
 {
-    return m_originalBaseInComposedTree;
+    return m_originalBaseInFlatTree;
 }
 
 // TODO(yosin): To avoid undefined symbols in clang, we explicitly
@@ -133,9 +133,9 @@
 }
 
 template <>
-const VisibleSelectionInComposedTree& FrameSelection::visibleSelection<EditingInComposedTreeStrategy>() const
+const VisibleSelectionInFlatTree& FrameSelection::visibleSelection<EditingInFlatTreeStrategy>() const
 {
-    return m_selectionEditor->visibleSelection<EditingInComposedTreeStrategy>();
+    return m_selectionEditor->visibleSelection<EditingInFlatTreeStrategy>();
 }
 
 Element* FrameSelection::rootEditableElementOrDocumentElement() const
@@ -159,9 +159,9 @@
     return visibleSelection<EditingStrategy>();
 }
 
-const VisibleSelectionInComposedTree& FrameSelection::selectionInComposedTree() const
+const VisibleSelectionInFlatTree& FrameSelection::selectionInFlatTree() const
 {
-    return visibleSelection<EditingInComposedTreeStrategy>();
+    return visibleSelection<EditingInFlatTreeStrategy>();
 }
 
 void FrameSelection::moveTo(const VisiblePosition &pos, EUserTriggered userTriggered, CursorAlignOnScroll align)
@@ -259,9 +259,9 @@
     setNonDirectionalSelectionIfNeededAlgorithm<EditingStrategy>(passedNewSelection, granularity, endpointsAdjustmentMode);
 }
 
-void FrameSelection::setNonDirectionalSelectionIfNeeded(const VisibleSelectionInComposedTree& passedNewSelection, TextGranularity granularity, EndPointsAdjustmentMode endpointsAdjustmentMode)
+void FrameSelection::setNonDirectionalSelectionIfNeeded(const VisibleSelectionInFlatTree& passedNewSelection, TextGranularity granularity, EndPointsAdjustmentMode endpointsAdjustmentMode)
 {
-    setNonDirectionalSelectionIfNeededAlgorithm<EditingInComposedTreeStrategy>(passedNewSelection, granularity, endpointsAdjustmentMode);
+    setNonDirectionalSelectionIfNeededAlgorithm<EditingInFlatTreeStrategy>(passedNewSelection, granularity, endpointsAdjustmentMode);
 }
 
 template <typename Strategy>
@@ -344,10 +344,10 @@
     // This may dispatch a synchronous focus-related events.
     selectFrameElementInParentIfFullySelected();
     notifyLayoutObjectOfSelectionChange(userTriggered);
-    // If the selections are same in the DOM tree but not in the composed tree,
+    // If the selections are same in the DOM tree but not in the flat tree,
     // don't fire events. For example, if the selection crosses shadow tree
     // boundary, selection for the DOM tree is shrunk while that for the
-    // composed tree is not. Additionally, this case occurs in some edge cases.
+    // flat tree is not. Additionally, this case occurs in some edge cases.
     // See also: editing/pasteboard/4076267-3.html
     if (oldSelection == m_selectionEditor->visibleSelection<Strategy>()) {
         m_frame->inputMethodController().cancelCompositionIfSelectionIsInvalid();
@@ -376,9 +376,9 @@
     setSelectionAlgorithm<EditingStrategy>(newSelection, options, align, granularity);
 }
 
-void FrameSelection::setSelection(const VisibleSelectionInComposedTree& newSelection, SetSelectionOptions options, CursorAlignOnScroll align, TextGranularity granularity)
+void FrameSelection::setSelection(const VisibleSelectionInFlatTree& newSelection, SetSelectionOptions options, CursorAlignOnScroll align, TextGranularity granularity)
 {
-    setSelectionAlgorithm<EditingInComposedTreeStrategy>(newSelection, options, align, granularity);
+    setSelectionAlgorithm<EditingInFlatTreeStrategy>(newSelection, options, align, granularity);
 }
 
 static bool removingNodeRemovesPosition(Node& node, const Position& position)
@@ -766,8 +766,8 @@
 
 bool FrameSelection::contains(const LayoutPoint& point)
 {
-    if (RuntimeEnabledFeatures::selectionForComposedTreeEnabled())
-        return containsAlgorithm<EditingInComposedTreeStrategy>(point);
+    if (RuntimeEnabledFeatures::selectionForFlatTreeEnabled())
+        return containsAlgorithm<EditingInFlatTreeStrategy>(point);
     return containsAlgorithm<EditingStrategy>(point);
 }
 
@@ -1132,8 +1132,8 @@
 
 static String extractSelectedText(const FrameSelection& selection, TextIteratorBehavior behavior)
 {
-    if (RuntimeEnabledFeatures::selectionForComposedTreeEnabled())
-        return extractSelectedTextAlgorithm<EditingInComposedTreeStrategy>(selection, behavior);
+    if (RuntimeEnabledFeatures::selectionForFlatTreeEnabled())
+        return extractSelectedTextAlgorithm<EditingInFlatTreeStrategy>(selection, behavior);
     return extractSelectedTextAlgorithm<EditingStrategy>(selection, behavior);
 }
 
@@ -1147,9 +1147,9 @@
 
 String FrameSelection::selectedHTMLForClipboard() const
 {
-    if (!RuntimeEnabledFeatures::selectionForComposedTreeEnabled())
+    if (!RuntimeEnabledFeatures::selectionForFlatTreeEnabled())
         return extractSelectedHTMLAlgorithm<EditingStrategy>(*this);
-    return extractSelectedHTMLAlgorithm<EditingInComposedTreeStrategy>(*this);
+    return extractSelectedHTMLAlgorithm<EditingInFlatTreeStrategy>(*this);
 }
 
 String FrameSelection::selectedText(TextIteratorBehavior behavior) const
@@ -1327,7 +1327,7 @@
     visitor->trace(m_pendingSelection);
     visitor->trace(m_selectionEditor);
     visitor->trace(m_originalBase);
-    visitor->trace(m_originalBaseInComposedTree);
+    visitor->trace(m_originalBaseInFlatTree);
     visitor->trace(m_previousCaretNode);
     visitor->trace(m_typingStyle);
 }
diff --git a/third_party/WebKit/Source/core/editing/FrameSelection.h b/third_party/WebKit/Source/core/editing/FrameSelection.h
index e53345c..8daf585 100644
--- a/third_party/WebKit/Source/core/editing/FrameSelection.h
+++ b/third_party/WebKit/Source/core/editing/FrameSelection.h
@@ -83,7 +83,7 @@
         DoNotSetFocus = 1 << 4,
         DoNotUpdateAppearance = 1 << 5,
         DoNotClearStrategy = 1 << 6,
-        DoNotAdjustInComposedTree = 1 << 7,
+        DoNotAdjustInFlatTree = 1 << 7,
     };
     typedef unsigned SetSelectionOptions; // Union of values in SetSelectionOption and EUserTriggered
     static inline EUserTriggered selectionOptionsToUserTriggered(SetSelectionOptions options)
@@ -109,11 +109,11 @@
 
     const VisibleSelection& selection() const;
     void setSelection(const VisibleSelection&, SetSelectionOptions = CloseTyping | ClearTypingStyle, CursorAlignOnScroll = CursorAlignOnScroll::IfNeeded, TextGranularity = CharacterGranularity);
-    void setSelection(const VisibleSelectionInComposedTree&, SetSelectionOptions = CloseTyping | ClearTypingStyle, CursorAlignOnScroll = CursorAlignOnScroll::IfNeeded, TextGranularity = CharacterGranularity);
+    void setSelection(const VisibleSelectionInFlatTree&, SetSelectionOptions = CloseTyping | ClearTypingStyle, CursorAlignOnScroll = CursorAlignOnScroll::IfNeeded, TextGranularity = CharacterGranularity);
     // TODO(yosin) We should get rid of two parameters version of
     // |setSelection()| to avoid conflict of four parameters version.
     void setSelection(const VisibleSelection& selection, TextGranularity granularity) { setSelection(selection, CloseTyping | ClearTypingStyle, CursorAlignOnScroll::IfNeeded, granularity); }
-    void setSelection(const VisibleSelectionInComposedTree& selection, TextGranularity granularity) { setSelection(selection, CloseTyping | ClearTypingStyle, CursorAlignOnScroll::IfNeeded, granularity); }
+    void setSelection(const VisibleSelectionInFlatTree& selection, TextGranularity granularity) { setSelection(selection, CloseTyping | ClearTypingStyle, CursorAlignOnScroll::IfNeeded, granularity); }
     // TODO(yosin) We should get rid of |Range| version of |setSelectedRagne()|
     // for Oilpan.
     bool setSelectedRange(Range*, TextAffinity, SelectionDirectionalMode = SelectionDirectionalMode::NonDirectional, SetSelectionOptions = CloseTyping | ClearTypingStyle);
@@ -212,7 +212,7 @@
 
     enum EndPointsAdjustmentMode { AdjustEndpointsAtBidiBoundary, DoNotAdjsutEndpoints };
     void setNonDirectionalSelectionIfNeeded(const VisibleSelection&, TextGranularity, EndPointsAdjustmentMode = DoNotAdjsutEndpoints);
-    void setNonDirectionalSelectionIfNeeded(const VisibleSelectionInComposedTree&, TextGranularity, EndPointsAdjustmentMode = DoNotAdjsutEndpoints);
+    void setNonDirectionalSelectionIfNeeded(const VisibleSelectionInFlatTree&, TextGranularity, EndPointsAdjustmentMode = DoNotAdjsutEndpoints);
     void setFocusedNodeIfNeeded();
     void notifyLayoutObjectOfSelectionChange(EUserTriggered);
 
@@ -249,14 +249,14 @@
 
     explicit FrameSelection(LocalFrame*);
 
-    // Note: We have |selectionInComposedTree()| for unit tests, we should
-    // use |visibleSelection<EditingInComposedTreeStrategy>()|.
-    const VisibleSelectionInComposedTree& selectionInComposedTree() const;
+    // Note: We have |selectionInFlatTree()| for unit tests, we should
+    // use |visibleSelection<EditingInFlatTreeStrategy>()|.
+    const VisibleSelectionInFlatTree& selectionInFlatTree() const;
 
     template <typename Strategy>
     VisiblePositionTemplate<Strategy> originalBase() const;
     void setOriginalBase(const VisiblePosition& newBase) { m_originalBase = newBase; }
-    void setOriginalBase(const VisiblePositionInComposedTree& newBase) { m_originalBaseInComposedTree = newBase; }
+    void setOriginalBase(const VisiblePositionInFlatTree& newBase) { m_originalBaseInFlatTree = newBase; }
 
     template <typename Strategy>
     bool containsAlgorithm(const LayoutPoint&);
@@ -296,7 +296,7 @@
 
     // Used to store base before the adjustment at bidi boundary
     VisiblePosition m_originalBase;
-    VisiblePositionInComposedTree m_originalBaseInComposedTree;
+    VisiblePositionInFlatTree m_originalBaseInFlatTree;
     TextGranularity m_granularity;
 
     RefPtrWillBeMember<Node> m_previousCaretNode; // The last node which painted the caret. Retained for clearing the old caret when it moves.
diff --git a/third_party/WebKit/Source/core/editing/FrameSelectionTest.cpp b/third_party/WebKit/Source/core/editing/FrameSelectionTest.cpp
index dccd9db..cd04d73 100644
--- a/third_party/WebKit/Source/core/editing/FrameSelectionTest.cpp
+++ b/third_party/WebKit/Source/core/editing/FrameSelectionTest.cpp
@@ -30,7 +30,7 @@
     void setSelection(const VisibleSelection&);
     FrameSelection& selection() const;
     const VisibleSelection& visibleSelectionInDOMTree() const { return selection().selection(); }
-    const VisibleSelectionInComposedTree& visibleSelectionInComposedTree() const { return selection().selectionInComposedTree(); }
+    const VisibleSelectionInFlatTree& visibleSelectionInFlatTree() const { return selection().selectionInFlatTree(); }
 
     PassRefPtrWillBeRawPtr<Text> appendTextNode(const String& data);
     int layoutCount() const { return dummyPageHolder().frameView().layoutCount(); }
@@ -190,28 +190,28 @@
     Node* host = document().getElementById("host");
 
     // top to bottom
-    selection().setNonDirectionalSelectionIfNeeded(VisibleSelectionInComposedTree(PositionInComposedTree(top, 1), PositionInComposedTree(bottom, 3)), CharacterGranularity);
+    selection().setNonDirectionalSelectionIfNeeded(VisibleSelectionInFlatTree(PositionInFlatTree(top, 1), PositionInFlatTree(bottom, 3)), CharacterGranularity);
     EXPECT_EQ(Position(top, 1), visibleSelectionInDOMTree().base());
     EXPECT_EQ(Position::beforeNode(host), visibleSelectionInDOMTree().extent());
     EXPECT_EQ(Position(top, 1), visibleSelectionInDOMTree().start());
     EXPECT_EQ(Position(top, 3), visibleSelectionInDOMTree().end());
 
-    EXPECT_EQ(PositionInComposedTree(top, 1), visibleSelectionInComposedTree().base());
-    EXPECT_EQ(PositionInComposedTree(bottom, 3), visibleSelectionInComposedTree().extent());
-    EXPECT_EQ(PositionInComposedTree(top, 1), visibleSelectionInComposedTree().start());
-    EXPECT_EQ(PositionInComposedTree(bottom, 3), visibleSelectionInComposedTree().end());
+    EXPECT_EQ(PositionInFlatTree(top, 1), visibleSelectionInFlatTree().base());
+    EXPECT_EQ(PositionInFlatTree(bottom, 3), visibleSelectionInFlatTree().extent());
+    EXPECT_EQ(PositionInFlatTree(top, 1), visibleSelectionInFlatTree().start());
+    EXPECT_EQ(PositionInFlatTree(bottom, 3), visibleSelectionInFlatTree().end());
 
     // bottom to top
-    selection().setNonDirectionalSelectionIfNeeded(VisibleSelectionInComposedTree(PositionInComposedTree(bottom, 3), PositionInComposedTree(top, 1)), CharacterGranularity);
+    selection().setNonDirectionalSelectionIfNeeded(VisibleSelectionInFlatTree(PositionInFlatTree(bottom, 3), PositionInFlatTree(top, 1)), CharacterGranularity);
     EXPECT_EQ(Position(bottom, 3), visibleSelectionInDOMTree().base());
     EXPECT_EQ(Position::beforeNode(bottom->parentNode()), visibleSelectionInDOMTree().extent());
     EXPECT_EQ(Position(bottom, 0), visibleSelectionInDOMTree().start());
     EXPECT_EQ(Position(bottom, 3), visibleSelectionInDOMTree().end());
 
-    EXPECT_EQ(PositionInComposedTree(bottom, 3), visibleSelectionInComposedTree().base());
-    EXPECT_EQ(PositionInComposedTree(top, 1), visibleSelectionInComposedTree().extent());
-    EXPECT_EQ(PositionInComposedTree(top, 1), visibleSelectionInComposedTree().start());
-    EXPECT_EQ(PositionInComposedTree(bottom, 3), visibleSelectionInComposedTree().end());
+    EXPECT_EQ(PositionInFlatTree(bottom, 3), visibleSelectionInFlatTree().base());
+    EXPECT_EQ(PositionInFlatTree(top, 1), visibleSelectionInFlatTree().extent());
+    EXPECT_EQ(PositionInFlatTree(top, 1), visibleSelectionInFlatTree().start());
+    EXPECT_EQ(PositionInFlatTree(bottom, 3), visibleSelectionInFlatTree().end());
 }
 
 TEST_F(FrameSelectionTest, SelectAllWithUnselectableRoot)
diff --git a/third_party/WebKit/Source/core/editing/PendingSelection.cpp b/third_party/WebKit/Source/core/editing/PendingSelection.cpp
index c33d170..d5d8fc75 100644
--- a/third_party/WebKit/Source/core/editing/PendingSelection.cpp
+++ b/third_party/WebKit/Source/core/editing/PendingSelection.cpp
@@ -139,8 +139,8 @@
 
 void PendingSelection::commit(LayoutView& layoutView)
 {
-    if (RuntimeEnabledFeatures::selectionForComposedTreeEnabled())
-        return commitAlgorithm<EditingInComposedTreeStrategy>(layoutView);
+    if (RuntimeEnabledFeatures::selectionForFlatTreeEnabled())
+        return commitAlgorithm<EditingInFlatTreeStrategy>(layoutView);
     commitAlgorithm<EditingStrategy>(layoutView);
 }
 
diff --git a/third_party/WebKit/Source/core/editing/Position.cpp b/third_party/WebKit/Source/core/editing/Position.cpp
index b666cfd..2df74ba8 100644
--- a/third_party/WebKit/Source/core/editing/Position.cpp
+++ b/third_party/WebKit/Source/core/editing/Position.cpp
@@ -283,7 +283,7 @@
     return Strategy::commonAncestor(*computeContainerNode(), *other.computeContainerNode());
 }
 
-int comparePositions(const PositionInComposedTree& positionA, const PositionInComposedTree& positionB)
+int comparePositions(const PositionInFlatTree& positionA, const PositionInFlatTree& positionB)
 {
     ASSERT(positionA.isNotNull());
     ASSERT(positionB.isNotNull());
@@ -294,7 +294,7 @@
     Node* containerB = positionB.computeContainerNode();
     int offsetA = positionA.computeOffsetInContainerNode();
     int offsetB = positionB.computeOffsetInContainerNode();
-    return comparePositionsInComposedTree(containerA, offsetA, containerB, offsetB);
+    return comparePositionsInFlatTree(containerA, offsetA, containerB, offsetB);
 }
 
 template <typename Strategy>
@@ -383,40 +383,40 @@
     fprintf(stderr, "Position [%s]: %s [%p] %s at %d\n", msg, anchorNode()->nodeName().utf8().data(), anchorNode(), anchorType, m_offset);
 }
 
-PositionInComposedTree toPositionInComposedTree(const Position& pos)
+PositionInFlatTree toPositionInFlatTree(const Position& pos)
 {
     if (pos.isNull())
-        return PositionInComposedTree();
+        return PositionInFlatTree();
 
     if (pos.isOffsetInAnchor()) {
         Node* anchor = pos.anchorNode();
         if (anchor->offsetInCharacters())
-            return PositionInComposedTree(anchor, pos.computeOffsetInContainerNode());
+            return PositionInFlatTree(anchor, pos.computeOffsetInContainerNode());
         ASSERT(!anchor->isSlotOrActiveInsertionPoint());
         int offset = pos.computeOffsetInContainerNode();
         Node* child = NodeTraversal::childAt(*anchor, offset);
         if (!child) {
             if (anchor->isShadowRoot())
-                return PositionInComposedTree(anchor->shadowHost(), PositionAnchorType::AfterChildren);
-            return PositionInComposedTree(anchor, PositionAnchorType::AfterChildren);
+                return PositionInFlatTree(anchor->shadowHost(), PositionAnchorType::AfterChildren);
+            return PositionInFlatTree(anchor, PositionAnchorType::AfterChildren);
         }
         child->updateDistribution();
         if (child->isSlotOrActiveInsertionPoint()) {
             if (anchor->isShadowRoot())
-                return PositionInComposedTree(anchor->shadowHost(), offset);
-            return PositionInComposedTree(anchor, offset);
+                return PositionInFlatTree(anchor->shadowHost(), offset);
+            return PositionInFlatTree(anchor, offset);
         }
-        if (Node* parent = ComposedTreeTraversal::parent(*child))
-            return PositionInComposedTree(parent, ComposedTreeTraversal::index(*child));
-        // When |pos| isn't appeared in composed tree, we map |pos| to after
+        if (Node* parent = FlatTreeTraversal::parent(*child))
+            return PositionInFlatTree(parent, FlatTreeTraversal::index(*child));
+        // When |pos| isn't appeared in flat tree, we map |pos| to after
         // children of shadow host.
         // e.g. "foo",0 in <progress>foo</progress>
         if (anchor->isShadowRoot())
-            return PositionInComposedTree(anchor->shadowHost(), PositionAnchorType::AfterChildren);
-        return PositionInComposedTree(anchor, PositionAnchorType::AfterChildren);
+            return PositionInFlatTree(anchor->shadowHost(), PositionAnchorType::AfterChildren);
+        return PositionInFlatTree(anchor, PositionAnchorType::AfterChildren);
     }
 
-    return PositionInComposedTree(pos.anchorNode(), pos.anchorType());
+    return PositionInFlatTree(pos.anchorNode(), pos.anchorType());
 }
 
 Position toPositionInDOMTree(const Position& position)
@@ -424,7 +424,7 @@
     return position;
 }
 
-Position toPositionInDOMTree(const PositionInComposedTree& position)
+Position toPositionInDOMTree(const PositionInFlatTree& position)
 {
     if (position.isNull())
         return Position();
@@ -445,7 +445,7 @@
         int offset = position.offsetInContainerNode();
         if (anchorNode->offsetInCharacters())
             return Position(anchorNode, offset);
-        Node* child = ComposedTreeTraversal::childAt(*anchorNode, offset);
+        Node* child = FlatTreeTraversal::childAt(*anchorNode, offset);
         if (child)
             return Position(child->parentNode(), child->nodeIndex());
         if (!position.offsetInContainerNode())
@@ -515,18 +515,18 @@
 }
 
 template <typename Strategy>
-void PositionTemplate<Strategy>::showTreeForThisInComposedTree() const
+void PositionTemplate<Strategy>::showTreeForThisInFlatTree() const
 {
     if (!anchorNode())
         return;
-    anchorNode()->showTreeForThisInComposedTree();
+    anchorNode()->showTreeForThisInFlatTree();
     showAnchorTypeAndOffset();
 }
 
 #endif
 
 template class CORE_TEMPLATE_EXPORT PositionTemplate<EditingStrategy>;
-template class CORE_TEMPLATE_EXPORT PositionTemplate<EditingInComposedTreeStrategy>;
+template class CORE_TEMPLATE_EXPORT PositionTemplate<EditingInFlatTreeStrategy>;
 
 } // namespace blink
 
diff --git a/third_party/WebKit/Source/core/editing/Position.h b/third_party/WebKit/Source/core/editing/Position.h
index 7a166380..aecc667 100644
--- a/third_party/WebKit/Source/core/editing/Position.h
+++ b/third_party/WebKit/Source/core/editing/Position.h
@@ -172,7 +172,7 @@
     void formatForDebugger(char* buffer, unsigned length) const;
     void showAnchorTypeAndOffset() const;
     void showTreeForThis() const;
-    void showTreeForThisInComposedTree() const;
+    void showTreeForThisInFlatTree() const;
 #endif
 
     DEFINE_INLINE_TRACE()
@@ -195,10 +195,10 @@
 };
 
 extern template class CORE_EXTERN_TEMPLATE_EXPORT PositionTemplate<EditingStrategy>;
-extern template class CORE_EXTERN_TEMPLATE_EXPORT PositionTemplate<EditingInComposedTreeStrategy>;
+extern template class CORE_EXTERN_TEMPLATE_EXPORT PositionTemplate<EditingInFlatTreeStrategy>;
 
 using Position = PositionTemplate<EditingStrategy>;
-using PositionInComposedTree = PositionTemplate<EditingInComposedTreeStrategy>;
+using PositionInFlatTree = PositionTemplate<EditingInFlatTreeStrategy>;
 
 template <typename Strategy>
 bool operator==(const PositionTemplate<Strategy>& a, const PositionTemplate<Strategy>& b)
@@ -371,9 +371,9 @@
     return Strategy::editingIgnoresContent(node) ? afterNode(node) : lastPositionInNode(node);
 }
 
-CORE_EXPORT PositionInComposedTree toPositionInComposedTree(const Position&);
+CORE_EXPORT PositionInFlatTree toPositionInFlatTree(const Position&);
 CORE_EXPORT Position toPositionInDOMTree(const Position&);
-CORE_EXPORT Position toPositionInDOMTree(const PositionInComposedTree&);
+CORE_EXPORT Position toPositionInDOMTree(const PositionInFlatTree&);
 
 template <typename Strategy>
 PositionTemplate<Strategy> fromPositionInDOMTree(const Position&);
@@ -385,9 +385,9 @@
 }
 
 template <>
-inline PositionInComposedTree fromPositionInDOMTree<EditingInComposedTreeStrategy>(const Position& position)
+inline PositionInFlatTree fromPositionInDOMTree<EditingInFlatTreeStrategy>(const Position& position)
 {
-    return toPositionInComposedTree(position);
+    return toPositionInFlatTree(position);
 }
 
 // These printers are available only for testing in "webkit_unit_tests", and
@@ -397,7 +397,7 @@
 
 std::ostream& operator<<(std::ostream&, PositionAnchorType);
 std::ostream& operator<<(std::ostream&, const Position&);
-std::ostream& operator<<(std::ostream&, const PositionInComposedTree&);
+std::ostream& operator<<(std::ostream&, const PositionInFlatTree&);
 
 } // namespace blink
 
diff --git a/third_party/WebKit/Source/core/editing/PositionIterator.cpp b/third_party/WebKit/Source/core/editing/PositionIterator.cpp
index f6cb27b..5846f39 100644
--- a/third_party/WebKit/Source/core/editing/PositionIterator.cpp
+++ b/third_party/WebKit/Source/core/editing/PositionIterator.cpp
@@ -329,6 +329,6 @@
 }
 
 template class PositionIteratorAlgorithm<EditingStrategy>;
-template class PositionIteratorAlgorithm<EditingInComposedTreeStrategy>;
+template class PositionIteratorAlgorithm<EditingInFlatTreeStrategy>;
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/PositionIterator.h b/third_party/WebKit/Source/core/editing/PositionIterator.h
index b62f3e9..8777b977 100644
--- a/third_party/WebKit/Source/core/editing/PositionIterator.h
+++ b/third_party/WebKit/Source/core/editing/PositionIterator.h
@@ -86,10 +86,10 @@
 };
 
 extern template class PositionIteratorAlgorithm<EditingStrategy>;
-extern template class PositionIteratorAlgorithm<EditingInComposedTreeStrategy>;
+extern template class PositionIteratorAlgorithm<EditingInFlatTreeStrategy>;
 
 using PositionIterator = PositionIteratorAlgorithm<EditingStrategy>;
-using PositionIteratorInComposedTree = PositionIteratorAlgorithm<EditingInComposedTreeStrategy>;
+using PositionIteratorInFlatTree = PositionIteratorAlgorithm<EditingInFlatTreeStrategy>;
 
 } // namespace blink
 
diff --git a/third_party/WebKit/Source/core/editing/PositionTest.cpp b/third_party/WebKit/Source/core/editing/PositionTest.cpp
index b348eabe..5eaa807 100644
--- a/third_party/WebKit/Source/core/editing/PositionTest.cpp
+++ b/third_party/WebKit/Source/core/editing/PositionTest.cpp
@@ -14,7 +14,7 @@
 TEST_F(PositionTest, NodeAsRangeLastNodeNull)
 {
     EXPECT_EQ(nullptr, Position().nodeAsRangeLastNode());
-    EXPECT_EQ(nullptr, PositionInComposedTree().nodeAsRangeLastNode());
+    EXPECT_EQ(nullptr, PositionInFlatTree().nodeAsRangeLastNode());
 }
 
 TEST_F(PositionTest, editingPositionOfWithEditingIgnoresContent)
@@ -59,13 +59,13 @@
     EXPECT_EQ(t3, Position::inParentAfterNode(*p3).nodeAsRangeLastNode());
     EXPECT_EQ(t3, Position::afterNode(p3).nodeAsRangeLastNode());
 
-    EXPECT_EQ(body, PositionInComposedTree::inParentBeforeNode(*p1).nodeAsRangeLastNode());
-    EXPECT_EQ(t1, PositionInComposedTree::inParentBeforeNode(*p2).nodeAsRangeLastNode());
-    EXPECT_EQ(p2, PositionInComposedTree::inParentBeforeNode(*p3).nodeAsRangeLastNode());
-    EXPECT_EQ(t1, PositionInComposedTree::inParentAfterNode(*p1).nodeAsRangeLastNode());
-    EXPECT_EQ(p2, PositionInComposedTree::inParentAfterNode(*p2).nodeAsRangeLastNode());
-    EXPECT_EQ(t3, PositionInComposedTree::inParentAfterNode(*p3).nodeAsRangeLastNode());
-    EXPECT_EQ(t3, PositionInComposedTree::afterNode(p3).nodeAsRangeLastNode());
+    EXPECT_EQ(body, PositionInFlatTree::inParentBeforeNode(*p1).nodeAsRangeLastNode());
+    EXPECT_EQ(t1, PositionInFlatTree::inParentBeforeNode(*p2).nodeAsRangeLastNode());
+    EXPECT_EQ(p2, PositionInFlatTree::inParentBeforeNode(*p3).nodeAsRangeLastNode());
+    EXPECT_EQ(t1, PositionInFlatTree::inParentAfterNode(*p1).nodeAsRangeLastNode());
+    EXPECT_EQ(p2, PositionInFlatTree::inParentAfterNode(*p2).nodeAsRangeLastNode());
+    EXPECT_EQ(t3, PositionInFlatTree::inParentAfterNode(*p3).nodeAsRangeLastNode());
+    EXPECT_EQ(t3, PositionInFlatTree::afterNode(p3).nodeAsRangeLastNode());
 }
 
 TEST_F(PositionTest, NodeAsRangeLastNodeShadow)
@@ -90,14 +90,14 @@
     EXPECT_EQ(t2, Position::inParentAfterNode(*n2).nodeAsRangeLastNode());
     EXPECT_EQ(t3, Position::afterNode(host).nodeAsRangeLastNode());
 
-    EXPECT_EQ(t2, PositionInComposedTree::inParentBeforeNode(*n1).nodeAsRangeLastNode());
-    EXPECT_EQ(a, PositionInComposedTree::inParentBeforeNode(*n2).nodeAsRangeLastNode());
-    EXPECT_EQ(t1, PositionInComposedTree::inParentAfterNode(*n1).nodeAsRangeLastNode());
-    EXPECT_EQ(t2, PositionInComposedTree::inParentAfterNode(*n2).nodeAsRangeLastNode());
-    EXPECT_EQ(t1, PositionInComposedTree::afterNode(host).nodeAsRangeLastNode());
+    EXPECT_EQ(t2, PositionInFlatTree::inParentBeforeNode(*n1).nodeAsRangeLastNode());
+    EXPECT_EQ(a, PositionInFlatTree::inParentBeforeNode(*n2).nodeAsRangeLastNode());
+    EXPECT_EQ(t1, PositionInFlatTree::inParentAfterNode(*n1).nodeAsRangeLastNode());
+    EXPECT_EQ(t2, PositionInFlatTree::inParentAfterNode(*n2).nodeAsRangeLastNode());
+    EXPECT_EQ(t1, PositionInFlatTree::afterNode(host).nodeAsRangeLastNode());
 }
 
-TEST_F(PositionTest, ToPositionInComposedTreeWithActiveInsertionPoint)
+TEST_F(PositionTest, ToPositionInFlatTreeWithActiveInsertionPoint)
 {
     const char* bodyContent = "<p id='host'>00<b id='one'>11</b>22</p>";
     const char* shadowContent = "<a id='a'><content select=#one id='content'></content><content></content></a>";
@@ -105,31 +105,31 @@
     RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = setShadowContent(shadowContent, "host");
     RefPtrWillBeRawPtr<Element> anchor = shadowRoot->getElementById("a");
 
-    EXPECT_EQ(PositionInComposedTree(anchor.get(), 0), toPositionInComposedTree(Position(anchor.get(), 0)));
-    EXPECT_EQ(PositionInComposedTree(anchor.get(), 1), toPositionInComposedTree(Position(anchor.get(), 1)));
-    EXPECT_EQ(PositionInComposedTree(anchor, PositionAnchorType::AfterChildren), toPositionInComposedTree(Position(anchor.get(), 2)));
+    EXPECT_EQ(PositionInFlatTree(anchor.get(), 0), toPositionInFlatTree(Position(anchor.get(), 0)));
+    EXPECT_EQ(PositionInFlatTree(anchor.get(), 1), toPositionInFlatTree(Position(anchor.get(), 1)));
+    EXPECT_EQ(PositionInFlatTree(anchor, PositionAnchorType::AfterChildren), toPositionInFlatTree(Position(anchor.get(), 2)));
 }
 
-TEST_F(PositionTest, ToPositionInComposedTreeWithInactiveInsertionPoint)
+TEST_F(PositionTest, ToPositionInFlatTreeWithInactiveInsertionPoint)
 {
     const char* bodyContent = "<p id='p'><content></content></p>";
     setBodyContent(bodyContent);
     RefPtrWillBeRawPtr<Element> anchor = document().getElementById("p");
 
-    EXPECT_EQ(PositionInComposedTree(anchor.get(), 0), toPositionInComposedTree(Position(anchor.get(), 0)));
-    EXPECT_EQ(PositionInComposedTree(anchor, PositionAnchorType::AfterChildren), toPositionInComposedTree(Position(anchor.get(), 1)));
+    EXPECT_EQ(PositionInFlatTree(anchor.get(), 0), toPositionInFlatTree(Position(anchor.get(), 0)));
+    EXPECT_EQ(PositionInFlatTree(anchor, PositionAnchorType::AfterChildren), toPositionInFlatTree(Position(anchor.get(), 1)));
 }
 
 // This test comes from "editing/style/block-style-progress-crash.html".
-TEST_F(PositionTest, ToPositionInComposedTreeWithNotDistributed)
+TEST_F(PositionTest, ToPositionInFlatTreeWithNotDistributed)
 {
     setBodyContent("<progress id=sample>foo</progress>");
     Element* sample = document().getElementById("sample");
 
-    EXPECT_EQ(PositionInComposedTree(sample, PositionAnchorType::AfterChildren), toPositionInComposedTree(Position(sample, 0)));
+    EXPECT_EQ(PositionInFlatTree(sample, PositionAnchorType::AfterChildren), toPositionInFlatTree(Position(sample, 0)));
 }
 
-TEST_F(PositionTest, ToPositionInComposedTreeWithShadowRoot)
+TEST_F(PositionTest, ToPositionInFlatTreeWithShadowRoot)
 {
     const char* bodyContent = "<p id='host'>00<b id='one'>11</b>22</p>";
     const char* shadowContent = "<a><content select=#one></content></a>";
@@ -137,11 +137,11 @@
     RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = setShadowContent(shadowContent, "host");
     RefPtrWillBeRawPtr<Element> host = document().getElementById("host");
 
-    EXPECT_EQ(PositionInComposedTree(host.get(), 0), toPositionInComposedTree(Position(shadowRoot.get(), 0)));
-    EXPECT_EQ(PositionInComposedTree(host.get(), PositionAnchorType::AfterChildren), toPositionInComposedTree(Position(shadowRoot.get(), 1)));
+    EXPECT_EQ(PositionInFlatTree(host.get(), 0), toPositionInFlatTree(Position(shadowRoot.get(), 0)));
+    EXPECT_EQ(PositionInFlatTree(host.get(), PositionAnchorType::AfterChildren), toPositionInFlatTree(Position(shadowRoot.get(), 1)));
 }
 
-TEST_F(PositionTest, ToPositionInComposedTreeWithShadowRootContainingSingleContent)
+TEST_F(PositionTest, ToPositionInFlatTreeWithShadowRootContainingSingleContent)
 {
     const char* bodyContent = "<p id='host'>00<b id='one'>11</b>22</p>";
     const char* shadowContent = "<content select=#one></content>";
@@ -149,11 +149,11 @@
     RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = setShadowContent(shadowContent, "host");
     RefPtrWillBeRawPtr<Element> host = document().getElementById("host");
 
-    EXPECT_EQ(PositionInComposedTree(host.get(), 0), toPositionInComposedTree(Position(shadowRoot.get(), 0)));
-    EXPECT_EQ(PositionInComposedTree(host.get(), PositionAnchorType::AfterChildren), toPositionInComposedTree(Position(shadowRoot.get(), 1)));
+    EXPECT_EQ(PositionInFlatTree(host.get(), 0), toPositionInFlatTree(Position(shadowRoot.get(), 0)));
+    EXPECT_EQ(PositionInFlatTree(host.get(), PositionAnchorType::AfterChildren), toPositionInFlatTree(Position(shadowRoot.get(), 1)));
 }
 
-TEST_F(PositionTest, ToPositionInComposedTreeWithEmptyShadowRoot)
+TEST_F(PositionTest, ToPositionInFlatTreeWithEmptyShadowRoot)
 {
     const char* bodyContent = "<p id='host'>00<b id='one'>11</b>22</p>";
     const char* shadowContent = "";
@@ -161,7 +161,7 @@
     RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = setShadowContent(shadowContent, "host");
     RefPtrWillBeRawPtr<Element> host = document().getElementById("host");
 
-    EXPECT_EQ(PositionInComposedTree(host, PositionAnchorType::AfterChildren), toPositionInComposedTree(Position(shadowRoot.get(), 0)));
+    EXPECT_EQ(PositionInFlatTree(host, PositionAnchorType::AfterChildren), toPositionInFlatTree(Position(shadowRoot.get(), 0)));
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/PositionWithAffinity.cpp b/third_party/WebKit/Source/core/editing/PositionWithAffinity.cpp
index 5e77c8e..58bf2ad4 100644
--- a/third_party/WebKit/Source/core/editing/PositionWithAffinity.cpp
+++ b/third_party/WebKit/Source/core/editing/PositionWithAffinity.cpp
@@ -33,6 +33,6 @@
 }
 
 template class CORE_TEMPLATE_EXPORT PositionWithAffinityTemplate<EditingStrategy>;
-template class CORE_TEMPLATE_EXPORT PositionWithAffinityTemplate<EditingInComposedTreeStrategy>;
+template class CORE_TEMPLATE_EXPORT PositionWithAffinityTemplate<EditingInFlatTreeStrategy>;
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/PositionWithAffinity.h b/third_party/WebKit/Source/core/editing/PositionWithAffinity.h
index e8b34aa..9a794ec7 100644
--- a/third_party/WebKit/Source/core/editing/PositionWithAffinity.h
+++ b/third_party/WebKit/Source/core/editing/PositionWithAffinity.h
@@ -43,10 +43,10 @@
 };
 
 extern template class CORE_EXTERN_TEMPLATE_EXPORT PositionWithAffinityTemplate<EditingStrategy>;
-extern template class CORE_EXTERN_TEMPLATE_EXPORT PositionWithAffinityTemplate<EditingInComposedTreeStrategy>;
+extern template class CORE_EXTERN_TEMPLATE_EXPORT PositionWithAffinityTemplate<EditingInFlatTreeStrategy>;
 
 using PositionWithAffinity = PositionWithAffinityTemplate<EditingStrategy>;
-using PositionInComposedTreeWithAffinity = PositionWithAffinityTemplate<EditingInComposedTreeStrategy>;
+using PositionInFlatTreeWithAffinity = PositionWithAffinityTemplate<EditingInFlatTreeStrategy>;
 
 template <typename Strategy>
 PositionWithAffinityTemplate<Strategy> fromPositionInDOMTree(const PositionWithAffinity&);
@@ -58,9 +58,9 @@
 }
 
 template <>
-inline PositionInComposedTreeWithAffinity fromPositionInDOMTree<EditingInComposedTreeStrategy>(const PositionWithAffinity& positionWithAffinity)
+inline PositionInFlatTreeWithAffinity fromPositionInDOMTree<EditingInFlatTreeStrategy>(const PositionWithAffinity& positionWithAffinity)
 {
-    return PositionInComposedTreeWithAffinity(toPositionInComposedTree(positionWithAffinity.position()), positionWithAffinity.affinity());
+    return PositionInFlatTreeWithAffinity(toPositionInFlatTree(positionWithAffinity.position()), positionWithAffinity.affinity());
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/RenderedPosition.cpp b/third_party/WebKit/Source/core/editing/RenderedPosition.cpp
index 2300c14..0ca8031 100644
--- a/third_party/WebKit/Source/core/editing/RenderedPosition.cpp
+++ b/third_party/WebKit/Source/core/editing/RenderedPosition.cpp
@@ -71,7 +71,7 @@
 {
 }
 
-RenderedPosition::RenderedPosition(const VisiblePositionInComposedTree& position)
+RenderedPosition::RenderedPosition(const VisiblePositionInFlatTree& position)
     : RenderedPosition(position.deepEquivalent(), position.affinity())
 {
 }
@@ -94,7 +94,7 @@
         m_layoutObject = layoutObjectFromPosition(position);
 }
 
-RenderedPosition::RenderedPosition(const PositionInComposedTree& position, TextAffinity affinity)
+RenderedPosition::RenderedPosition(const PositionInFlatTree& position, TextAffinity affinity)
     : RenderedPosition(toPositionInDOMTree(position), affinity)
 {
 }
diff --git a/third_party/WebKit/Source/core/editing/RenderedPosition.h b/third_party/WebKit/Source/core/editing/RenderedPosition.h
index 83b8d82..fdebceac 100644
--- a/third_party/WebKit/Source/core/editing/RenderedPosition.h
+++ b/third_party/WebKit/Source/core/editing/RenderedPosition.h
@@ -47,9 +47,9 @@
 public:
     RenderedPosition();
     explicit RenderedPosition(const VisiblePosition&);
-    explicit RenderedPosition(const VisiblePositionInComposedTree&);
+    explicit RenderedPosition(const VisiblePositionInFlatTree&);
     RenderedPosition(const Position&, TextAffinity);
-    RenderedPosition(const PositionInComposedTree&, TextAffinity);
+    RenderedPosition(const PositionInFlatTree&, TextAffinity);
     bool isEquivalent(const RenderedPosition&) const;
 
     bool isNull() const { return !m_layoutObject; }
diff --git a/third_party/WebKit/Source/core/editing/SelectionAdjuster.cpp b/third_party/WebKit/Source/core/editing/SelectionAdjuster.cpp
index e9fd273..9d9ea95f 100644
--- a/third_party/WebKit/Source/core/editing/SelectionAdjuster.cpp
+++ b/third_party/WebKit/Source/core/editing/SelectionAdjuster.cpp
@@ -33,21 +33,21 @@
 
 Node* enclosingShadowHost(Node* node)
 {
-    for (Node* runner = node; runner; runner = ComposedTreeTraversal::parent(*runner)) {
+    for (Node* runner = node; runner; runner = FlatTreeTraversal::parent(*runner)) {
         if (isShadowHost(runner))
             return runner;
     }
     return nullptr;
 }
 
-bool isEnclosedBy(const PositionInComposedTree& position, const Node& node)
+bool isEnclosedBy(const PositionInFlatTree& position, const Node& node)
 {
     ASSERT(position.isNotNull());
     Node* anchorNode = position.anchorNode();
     if (anchorNode == node)
         return !position.isAfterAnchor() && !position.isBeforeAnchor();
 
-    return ComposedTreeTraversal::isDescendantOf(*anchorNode, node);
+    return FlatTreeTraversal::isDescendantOf(*anchorNode, node);
 }
 
 bool isSelectionBoundary(const Node& node)
@@ -55,7 +55,7 @@
     return isHTMLTextAreaElement(node) || isHTMLInputElement(node) || isHTMLSelectElement(node);
 }
 
-Node* enclosingShadowHostForStart(const PositionInComposedTree& position)
+Node* enclosingShadowHostForStart(const PositionInFlatTree& position)
 {
     Node* node = position.nodeAsRangeFirstNode();
     if (!node)
@@ -68,7 +68,7 @@
     return isSelectionBoundary(*shadowHost) ? shadowHost : nullptr;
 }
 
-Node* enclosingShadowHostForEnd(const PositionInComposedTree& position)
+Node* enclosingShadowHostForEnd(const PositionInFlatTree& position)
 {
     Node* node = position.nodeAsRangeLastNode();
     if (!node)
@@ -81,20 +81,20 @@
     return isSelectionBoundary(*shadowHost) ? shadowHost : nullptr;
 }
 
-PositionInComposedTree adjustPositionInComposedTreeForStart(const PositionInComposedTree& position, Node* shadowHost)
+PositionInFlatTree adjustPositionInFlatTreeForStart(const PositionInFlatTree& position, Node* shadowHost)
 {
     if (isEnclosedBy(position, *shadowHost)) {
         if (position.isBeforeChildren())
-            return PositionInComposedTree::beforeNode(shadowHost);
-        return PositionInComposedTree::afterNode(shadowHost);
+            return PositionInFlatTree::beforeNode(shadowHost);
+        return PositionInFlatTree::afterNode(shadowHost);
     }
 
     // We use |firstChild|'s after instead of beforeAllChildren for backward
     // compatibility. The positions are same but the anchors would be different,
     // and selection painting uses anchor nodes.
-    if (Node* firstChild = ComposedTreeTraversal::firstChild(*shadowHost))
-        return PositionInComposedTree::beforeNode(firstChild);
-    return PositionInComposedTree();
+    if (Node* firstChild = FlatTreeTraversal::firstChild(*shadowHost))
+        return PositionInFlatTree::beforeNode(firstChild);
+    return PositionInFlatTree();
 }
 
 Position adjustPositionForEnd(const Position& currentPosition, Node* startContainerNode)
@@ -115,20 +115,20 @@
     return Position();
 }
 
-PositionInComposedTree adjustPositionInComposedTreeForEnd(const PositionInComposedTree& position, Node* shadowHost)
+PositionInFlatTree adjustPositionInFlatTreeForEnd(const PositionInFlatTree& position, Node* shadowHost)
 {
     if (isEnclosedBy(position, *shadowHost)) {
         if (position.isAfterChildren())
-            return PositionInComposedTree::afterNode(shadowHost);
-        return PositionInComposedTree::beforeNode(shadowHost);
+            return PositionInFlatTree::afterNode(shadowHost);
+        return PositionInFlatTree::beforeNode(shadowHost);
     }
 
     // We use |lastChild|'s after instead of afterAllChildren for backward
     // compatibility. The positions are same but the anchors would be different,
     // and selection painting uses anchor nodes.
-    if (Node* lastChild = ComposedTreeTraversal::lastChild(*shadowHost))
-        return PositionInComposedTree::afterNode(lastChild);
-    return PositionInComposedTree();
+    if (Node* lastChild = FlatTreeTraversal::lastChild(*shadowHost))
+        return PositionInFlatTree::afterNode(lastChild);
+    return PositionInFlatTree();
 }
 
 Position adjustPositionForStart(const Position& currentPosition, Node* endContainerNode)
@@ -151,39 +151,39 @@
 
 } // namespace
 
-// Updates |selectionInComposedTree| to match with |selection|.
-void SelectionAdjuster::adjustSelectionInComposedTree(VisibleSelectionInComposedTree* selectionInComposedTree, const VisibleSelection& selection)
+// Updates |selectionInFlatTree| to match with |selection|.
+void SelectionAdjuster::adjustSelectionInFlatTree(VisibleSelectionInFlatTree* selectionInFlatTree, const VisibleSelection& selection)
 {
     if (selection.isNone()) {
-        *selectionInComposedTree = VisibleSelectionInComposedTree();
+        *selectionInFlatTree = VisibleSelectionInFlatTree();
         return;
     }
 
-    const PositionInComposedTree& base = toPositionInComposedTree(selection.base());
-    const PositionInComposedTree& extent = toPositionInComposedTree(selection.extent());
-    const PositionInComposedTree& position1 = toPositionInComposedTree(selection.start());
-    const PositionInComposedTree& position2 = toPositionInComposedTree(selection.end());
+    const PositionInFlatTree& base = toPositionInFlatTree(selection.base());
+    const PositionInFlatTree& extent = toPositionInFlatTree(selection.extent());
+    const PositionInFlatTree& position1 = toPositionInFlatTree(selection.start());
+    const PositionInFlatTree& position2 = toPositionInFlatTree(selection.end());
     position1.anchorNode()->updateDistribution();
     position2.anchorNode()->updateDistribution();
-    selectionInComposedTree->m_base = base;
-    selectionInComposedTree->m_extent = extent;
-    selectionInComposedTree->m_affinity = selection.m_affinity;
-    selectionInComposedTree->m_isDirectional = selection.m_isDirectional;
-    selectionInComposedTree->m_granularity = selection.m_granularity;
-    selectionInComposedTree->m_hasTrailingWhitespace = selection.m_hasTrailingWhitespace;
-    selectionInComposedTree->m_baseIsFirst = base.isNull() || base.compareTo(extent) <= 0;
+    selectionInFlatTree->m_base = base;
+    selectionInFlatTree->m_extent = extent;
+    selectionInFlatTree->m_affinity = selection.m_affinity;
+    selectionInFlatTree->m_isDirectional = selection.m_isDirectional;
+    selectionInFlatTree->m_granularity = selection.m_granularity;
+    selectionInFlatTree->m_hasTrailingWhitespace = selection.m_hasTrailingWhitespace;
+    selectionInFlatTree->m_baseIsFirst = base.isNull() || base.compareTo(extent) <= 0;
     if (position1.compareTo(position2) <= 0) {
-        selectionInComposedTree->m_start = position1;
-        selectionInComposedTree->m_end = position2;
+        selectionInFlatTree->m_start = position1;
+        selectionInFlatTree->m_end = position2;
     } else {
-        selectionInComposedTree->m_start = position2;
-        selectionInComposedTree->m_end = position1;
+        selectionInFlatTree->m_start = position2;
+        selectionInFlatTree->m_end = position1;
     }
-    selectionInComposedTree->updateSelectionType();
-    selectionInComposedTree->didChange();
+    selectionInFlatTree->updateSelectionType();
+    selectionInFlatTree->didChange();
 }
 
-static bool isCrossingShadowBoundaries(const VisibleSelectionInComposedTree& selection)
+static bool isCrossingShadowBoundaries(const VisibleSelectionInFlatTree& selection)
 {
     if (!selection.isRange())
         return false;
@@ -193,29 +193,29 @@
         || selection.end().anchorNode()->treeScope() != treeScope;
 }
 
-void SelectionAdjuster::adjustSelectionInDOMTree(VisibleSelection* selection, const VisibleSelectionInComposedTree& selectionInComposedTree)
+void SelectionAdjuster::adjustSelectionInDOMTree(VisibleSelection* selection, const VisibleSelectionInFlatTree& selectionInFlatTree)
 {
-    if (selectionInComposedTree.isNone()) {
+    if (selectionInFlatTree.isNone()) {
         *selection = VisibleSelection();
         return;
     }
 
-    const Position& base = toPositionInDOMTree(selectionInComposedTree.base());
-    const Position& extent = toPositionInDOMTree(selectionInComposedTree.extent());
+    const Position& base = toPositionInDOMTree(selectionInFlatTree.base());
+    const Position& extent = toPositionInDOMTree(selectionInFlatTree.extent());
 
-    if (isCrossingShadowBoundaries(selectionInComposedTree)) {
+    if (isCrossingShadowBoundaries(selectionInFlatTree)) {
         *selection = VisibleSelection(base, extent);
         return;
     }
 
-    const Position& position1 = toPositionInDOMTree(selectionInComposedTree.start());
-    const Position& position2 = toPositionInDOMTree(selectionInComposedTree.end());
+    const Position& position1 = toPositionInDOMTree(selectionInFlatTree.start());
+    const Position& position2 = toPositionInDOMTree(selectionInFlatTree.end());
     selection->m_base = base;
     selection->m_extent = extent;
-    selection->m_affinity = selectionInComposedTree.m_affinity;
-    selection->m_isDirectional = selectionInComposedTree.m_isDirectional;
-    selection->m_granularity = selectionInComposedTree.m_granularity;
-    selection->m_hasTrailingWhitespace = selectionInComposedTree.m_hasTrailingWhitespace;
+    selection->m_affinity = selectionInFlatTree.m_affinity;
+    selection->m_isDirectional = selectionInFlatTree.m_isDirectional;
+    selection->m_granularity = selectionInFlatTree.m_granularity;
+    selection->m_hasTrailingWhitespace = selectionInFlatTree.m_hasTrailingWhitespace;
     selection->m_baseIsFirst = base.isNull() || base.compareTo(extent) <= 0;
     if (position1.compareTo(position2) <= 0) {
         selection->m_start = position1;
@@ -256,7 +256,7 @@
 // This function is called twice. The first is called when |m_start| and |m_end|
 // or |m_extent| are same, and the second when |m_start| and |m_end| are changed
 // after downstream/upstream.
-void SelectionAdjuster::adjustSelectionToAvoidCrossingShadowBoundaries(VisibleSelectionInComposedTree* selection)
+void SelectionAdjuster::adjustSelectionToAvoidCrossingShadowBoundaries(VisibleSelectionInFlatTree* selection)
 {
     Node* const shadowHostStart = enclosingShadowHostForStart(selection->start());
     Node* const shadowHostEnd = enclosingShadowHostForEnd(selection->end());
@@ -265,13 +265,13 @@
 
     if (selection->isBaseFirst()) {
         Node* const shadowHost = shadowHostStart ? shadowHostStart : shadowHostEnd;
-        const PositionInComposedTree& newEnd = adjustPositionInComposedTreeForEnd(selection->end(), shadowHost);
+        const PositionInFlatTree& newEnd = adjustPositionInFlatTreeForEnd(selection->end(), shadowHost);
         selection->m_extent = newEnd;
         selection->m_end = newEnd;
         return;
     }
     Node* const shadowHost = shadowHostEnd ? shadowHostEnd : shadowHostStart;
-    const PositionInComposedTree& newStart = adjustPositionInComposedTreeForStart(selection->start(), shadowHost);
+    const PositionInFlatTree& newStart = adjustPositionInFlatTreeForStart(selection->start(), shadowHost);
     selection->m_extent = newStart;
     selection->m_start = newStart;
 }
diff --git a/third_party/WebKit/Source/core/editing/SelectionAdjuster.h b/third_party/WebKit/Source/core/editing/SelectionAdjuster.h
index 37769a28..c589eeb6 100644
--- a/third_party/WebKit/Source/core/editing/SelectionAdjuster.h
+++ b/third_party/WebKit/Source/core/editing/SelectionAdjuster.h
@@ -16,10 +16,10 @@
 class CORE_EXPORT SelectionAdjuster final {
     STATIC_ONLY(SelectionAdjuster);
 public:
-    static void adjustSelectionInComposedTree(VisibleSelectionInComposedTree*, const VisibleSelection&);
-    static void adjustSelectionInDOMTree(VisibleSelection*, const VisibleSelectionInComposedTree&);
+    static void adjustSelectionInFlatTree(VisibleSelectionInFlatTree*, const VisibleSelection&);
+    static void adjustSelectionInDOMTree(VisibleSelection*, const VisibleSelectionInFlatTree&);
     static void adjustSelectionToAvoidCrossingShadowBoundaries(VisibleSelection*);
-    static void adjustSelectionToAvoidCrossingShadowBoundaries(VisibleSelectionInComposedTree*);
+    static void adjustSelectionToAvoidCrossingShadowBoundaries(VisibleSelectionInFlatTree*);
 };
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/SelectionAdjusterTest.cpp b/third_party/WebKit/Source/core/editing/SelectionAdjusterTest.cpp
index 45fa12e1..e106aa8 100644
--- a/third_party/WebKit/Source/core/editing/SelectionAdjusterTest.cpp
+++ b/third_party/WebKit/Source/core/editing/SelectionAdjusterTest.cpp
@@ -33,21 +33,21 @@
 class SelectionAdjusterTest : public EditingTestBase  {
 };
 
-TEST_F(SelectionAdjusterTest, adjustSelectionInComposedTree)
+TEST_F(SelectionAdjusterTest, adjustSelectionInFlatTree)
 {
     setBodyContent("<div id=sample>foo</div>");
     MockVisibleSelectionChangeObserver selectionObserver;
-    VisibleSelectionInComposedTree selectionInComposedTree;
-    selectionInComposedTree.setChangeObserver(selectionObserver);
+    VisibleSelectionInFlatTree selectionInFlatTree;
+    selectionInFlatTree.setChangeObserver(selectionObserver);
 
     Node* const sample = document().getElementById("sample");
     Node* const foo = sample->firstChild();
     // Select "foo"
     VisibleSelection selection(Position(foo, 0), Position(foo, 3));
-    SelectionAdjuster::adjustSelectionInComposedTree(&selectionInComposedTree, selection);
-    EXPECT_EQ(PositionInComposedTree(foo, 0), selectionInComposedTree.start());
-    EXPECT_EQ(PositionInComposedTree(foo, 3), selectionInComposedTree.end());
-    EXPECT_EQ(1, selectionObserver.callCounter()) << "adjustSelectionInComposedTree() should call didChangeVisibleSelection()";
+    SelectionAdjuster::adjustSelectionInFlatTree(&selectionInFlatTree, selection);
+    EXPECT_EQ(PositionInFlatTree(foo, 0), selectionInFlatTree.start());
+    EXPECT_EQ(PositionInFlatTree(foo, 3), selectionInFlatTree.end());
+    EXPECT_EQ(1, selectionObserver.callCounter()) << "adjustSelectionInFlatTree() should call didChangeVisibleSelection()";
 }
 
 TEST_F(SelectionAdjusterTest, adjustSelectionInDOMTree)
@@ -60,10 +60,10 @@
     Node* const sample = document().getElementById("sample");
     Node* const foo = sample->firstChild();
     // Select "foo"
-    VisibleSelectionInComposedTree selectionInComposedTree(
-        PositionInComposedTree(foo, 0),
-        PositionInComposedTree(foo, 3));
-    SelectionAdjuster::adjustSelectionInDOMTree(&selection, selectionInComposedTree);
+    VisibleSelectionInFlatTree selectionInFlatTree(
+        PositionInFlatTree(foo, 0),
+        PositionInFlatTree(foo, 3));
+    SelectionAdjuster::adjustSelectionInDOMTree(&selection, selectionInFlatTree);
     EXPECT_EQ(Position(foo, 0), selection.start());
     EXPECT_EQ(Position(foo, 3), selection.end());
     EXPECT_EQ(1, selectionObserver.callCounter()) << "adjustSelectionInDOMTree() should call didChangeVisibleSelection()";
diff --git a/third_party/WebKit/Source/core/editing/SelectionController.cpp b/third_party/WebKit/Source/core/editing/SelectionController.cpp
index b23baba..db0ebebf 100644
--- a/third_party/WebKit/Source/core/editing/SelectionController.cpp
+++ b/third_party/WebKit/Source/core/editing/SelectionController.cpp
@@ -352,8 +352,8 @@
 
     AppendTrailingWhitespace appendTrailingWhitespace = (result.event().clickCount() == 2 && m_frame->editor().isSelectTrailingWhitespaceEnabled()) ? AppendTrailingWhitespace::ShouldAppend : AppendTrailingWhitespace::DontAppend;
 
-    if (RuntimeEnabledFeatures::selectionForComposedTreeEnabled())
-        return selectClosestWordFromHitTestResult<EditingInComposedTreeStrategy>(result.hitTestResult(), appendTrailingWhitespace);
+    if (RuntimeEnabledFeatures::selectionForFlatTreeEnabled())
+        return selectClosestWordFromHitTestResult<EditingInFlatTreeStrategy>(result.hitTestResult(), appendTrailingWhitespace);
     selectClosestWordFromHitTestResult<EditingStrategy>(result.hitTestResult(), appendTrailingWhitespace);
 }
 
@@ -438,15 +438,15 @@
 
 bool SelectionController::handleMousePressEventTripleClick(const MouseEventWithHitTestResults& event)
 {
-    if (RuntimeEnabledFeatures::selectionForComposedTreeEnabled())
-        return handleMousePressEventTripleClickAlgorithm<EditingInComposedTreeStrategy>(event);
+    if (RuntimeEnabledFeatures::selectionForFlatTreeEnabled())
+        return handleMousePressEventTripleClickAlgorithm<EditingInFlatTreeStrategy>(event);
     return handleMousePressEventTripleClickAlgorithm<EditingStrategy>(event);
 }
 
 bool SelectionController::handleMousePressEventSingleClick(const MouseEventWithHitTestResults& event)
 {
-    if (RuntimeEnabledFeatures::selectionForComposedTreeEnabled())
-        return handleMousePressEventSingleClickAlgorithm<EditingInComposedTreeStrategy>(event);
+    if (RuntimeEnabledFeatures::selectionForFlatTreeEnabled())
+        return handleMousePressEventSingleClickAlgorithm<EditingInFlatTreeStrategy>(event);
     return handleMousePressEventSingleClickAlgorithm<EditingStrategy>(event);
 }
 
@@ -490,8 +490,8 @@
 
 void SelectionController::updateSelectionForMouseDrag(const HitTestResult& hitTestResult, Node* mousePressNode, const LayoutPoint& dragStartPos, const IntPoint& lastKnownMousePosition)
 {
-    if (RuntimeEnabledFeatures::selectionForComposedTreeEnabled())
-        return updateSelectionForMouseDragAlgorithm<EditingInComposedTreeStrategy>(hitTestResult, mousePressNode, dragStartPos, lastKnownMousePosition);
+    if (RuntimeEnabledFeatures::selectionForFlatTreeEnabled())
+        return updateSelectionForMouseDragAlgorithm<EditingInFlatTreeStrategy>(hitTestResult, mousePressNode, dragStartPos, lastKnownMousePosition);
     updateSelectionForMouseDragAlgorithm<EditingStrategy>(hitTestResult, mousePressNode, dragStartPos, lastKnownMousePosition);
 }
 
@@ -535,8 +535,8 @@
 
 bool SelectionController::handleMouseReleaseEvent(const MouseEventWithHitTestResults& event, const LayoutPoint& dragStartPos)
 {
-    if (RuntimeEnabledFeatures::selectionForComposedTreeEnabled())
-        return handleMouseReleaseEventAlgorithm<EditingInComposedTreeStrategy>(event, dragStartPos);
+    if (RuntimeEnabledFeatures::selectionForFlatTreeEnabled())
+        return handleMouseReleaseEventAlgorithm<EditingInFlatTreeStrategy>(event, dragStartPos);
     return handleMouseReleaseEventAlgorithm<EditingStrategy>(event, dragStartPos);
 }
 
@@ -592,8 +592,8 @@
 
 bool SelectionController::handleGestureLongPress(const PlatformGestureEvent& gestureEvent, const HitTestResult& hitTestResult)
 {
-    if (RuntimeEnabledFeatures::selectionForComposedTreeEnabled())
-        return handleGestureLongPressAlgorithm<EditingInComposedTreeStrategy>(gestureEvent, hitTestResult);
+    if (RuntimeEnabledFeatures::selectionForFlatTreeEnabled())
+        return handleGestureLongPressAlgorithm<EditingInFlatTreeStrategy>(gestureEvent, hitTestResult);
     return handleGestureLongPressAlgorithm<EditingStrategy>(gestureEvent, hitTestResult);
 }
 
@@ -610,16 +610,16 @@
     m_mouseDownMayStartSelect = true; // context menu events are always allowed to perform a selection
 
     if (mev.hitTestResult().isMisspelled()) {
-        if (RuntimeEnabledFeatures::selectionForComposedTreeEnabled())
-            return selectClosestMisspellingFromMouseEvent<EditingInComposedTreeStrategy>(mev);
+        if (RuntimeEnabledFeatures::selectionForFlatTreeEnabled())
+            return selectClosestMisspellingFromMouseEvent<EditingInFlatTreeStrategy>(mev);
         return selectClosestMisspellingFromMouseEvent<EditingStrategy>(mev);
     }
 
     if (!m_frame->editor().behavior().shouldSelectOnContextualMenuClick())
         return;
 
-    if (RuntimeEnabledFeatures::selectionForComposedTreeEnabled())
-        return selectClosestWordOrLinkFromMouseEvent<EditingInComposedTreeStrategy>(mev);
+    if (RuntimeEnabledFeatures::selectionForFlatTreeEnabled())
+        return selectClosestWordOrLinkFromMouseEvent<EditingInFlatTreeStrategy>(mev);
     selectClosestWordOrLinkFromMouseEvent<EditingStrategy>(mev);
 }
 
@@ -642,8 +642,8 @@
 
 void SelectionController::passMousePressEventToSubframe(const MouseEventWithHitTestResults& mev)
 {
-    if (RuntimeEnabledFeatures::selectionForComposedTreeEnabled())
-        return passMousePressEventToSubframeAlgorithm<EditingInComposedTreeStrategy>(mev);
+    if (RuntimeEnabledFeatures::selectionForFlatTreeEnabled())
+        return passMousePressEventToSubframeAlgorithm<EditingInFlatTreeStrategy>(mev);
     passMousePressEventToSubframeAlgorithm<EditingStrategy>(mev);
 }
 
diff --git a/third_party/WebKit/Source/core/editing/SelectionEditor.cpp b/third_party/WebKit/Source/core/editing/SelectionEditor.cpp
index 76bdfcf..4660cdc1 100644
--- a/third_party/WebKit/Source/core/editing/SelectionEditor.cpp
+++ b/third_party/WebKit/Source/core/editing/SelectionEditor.cpp
@@ -84,27 +84,27 @@
 }
 
 template <>
-const VisibleSelectionInComposedTree& SelectionEditor::visibleSelection<EditingInComposedTreeStrategy>() const
+const VisibleSelectionInFlatTree& SelectionEditor::visibleSelection<EditingInFlatTreeStrategy>() const
 {
-    return m_selectionInComposedTree;
+    return m_selectionInFlatTree;
 }
 
 void SelectionEditor::setVisibleSelection(const VisibleSelection& newSelection, FrameSelection::SetSelectionOptions options)
 {
     m_selection = newSelection;
-    if (options & FrameSelection::DoNotAdjustInComposedTree) {
-        m_selectionInComposedTree.setWithoutValidation(toPositionInComposedTree(m_selection.base()), toPositionInComposedTree(m_selection.extent()));
+    if (options & FrameSelection::DoNotAdjustInFlatTree) {
+        m_selectionInFlatTree.setWithoutValidation(toPositionInFlatTree(m_selection.base()), toPositionInFlatTree(m_selection.extent()));
         return;
     }
 
-    SelectionAdjuster::adjustSelectionInComposedTree(&m_selectionInComposedTree, m_selection);
+    SelectionAdjuster::adjustSelectionInFlatTree(&m_selectionInFlatTree, m_selection);
 }
 
-void SelectionEditor::setVisibleSelection(const VisibleSelectionInComposedTree& newSelection, FrameSelection::SetSelectionOptions options)
+void SelectionEditor::setVisibleSelection(const VisibleSelectionInFlatTree& newSelection, FrameSelection::SetSelectionOptions options)
 {
-    ASSERT(!(options & FrameSelection::DoNotAdjustInComposedTree));
-    m_selectionInComposedTree = newSelection;
-    SelectionAdjuster::adjustSelectionInDOMTree(&m_selection, m_selectionInComposedTree);
+    ASSERT(!(options & FrameSelection::DoNotAdjustInFlatTree));
+    m_selectionInFlatTree = newSelection;
+    SelectionAdjuster::adjustSelectionInDOMTree(&m_selection, m_selectionInFlatTree);
 }
 
 void SelectionEditor::resetXPosForVerticalArrowNavigation()
@@ -115,13 +115,13 @@
 void SelectionEditor::setIsDirectional(bool isDirectional)
 {
     m_selection.setIsDirectional(isDirectional);
-    m_selectionInComposedTree.setIsDirectional(isDirectional);
+    m_selectionInFlatTree.setIsDirectional(isDirectional);
 }
 
 void SelectionEditor::setWithoutValidation(const Position& base, const Position& extent)
 {
     m_selection.setWithoutValidation(base, extent);
-    m_selectionInComposedTree.setWithoutValidation(toPositionInComposedTree(base), toPositionInComposedTree(extent));
+    m_selectionInFlatTree.setWithoutValidation(toPositionInFlatTree(base), toPositionInFlatTree(extent));
 }
 
 TextDirection SelectionEditor::directionOfEnclosingBlock()
@@ -895,14 +895,14 @@
 void SelectionEditor::updateIfNeeded()
 {
     m_selection.updateIfNeeded();
-    m_selectionInComposedTree.updateIfNeeded();
+    m_selectionInFlatTree.updateIfNeeded();
 }
 
 DEFINE_TRACE(SelectionEditor)
 {
     visitor->trace(m_frameSelection);
     visitor->trace(m_selection);
-    visitor->trace(m_selectionInComposedTree);
+    visitor->trace(m_selectionInFlatTree);
     visitor->trace(m_logicalRange);
     VisibleSelectionChangeObserver::trace(visitor);
 }
diff --git a/third_party/WebKit/Source/core/editing/SelectionEditor.h b/third_party/WebKit/Source/core/editing/SelectionEditor.h
index bf37ddfc..2a2dab49 100644
--- a/third_party/WebKit/Source/core/editing/SelectionEditor.h
+++ b/third_party/WebKit/Source/core/editing/SelectionEditor.h
@@ -59,7 +59,7 @@
     template <typename Strategy>
     const VisibleSelectionTemplate<Strategy>& visibleSelection() const;
     void setVisibleSelection(const VisibleSelection&, FrameSelection::SetSelectionOptions);
-    void setVisibleSelection(const VisibleSelectionInComposedTree&, FrameSelection::SetSelectionOptions);
+    void setVisibleSelection(const VisibleSelectionInFlatTree&, FrameSelection::SetSelectionOptions);
 
     void setIsDirectional(bool);
     void setWithoutValidation(const Position& base, const Position& extent);
@@ -76,7 +76,7 @@
     // VisibleSelectionChangeObserver interface.
     void didChangeVisibleSelection() override;
 
-    // Updates |m_selection| and |m_selectionInComposedTree| with up-to-date
+    // Updates |m_selection| and |m_selectionInFlatTree| with up-to-date
     // layout if needed.
     void updateIfNeeded();
 
@@ -90,7 +90,7 @@
 
     LocalFrame* frame() const;
 
-    void adjustVisibleSelectionInComposedTree();
+    void adjustVisibleSelectionInFlatTree();
     void adjustVisibleSelectionInDOMTree();
 
     TextDirection directionOfEnclosingBlock();
@@ -120,7 +120,7 @@
 
     LayoutUnit m_xPosForVerticalArrowNavigation;
     VisibleSelection m_selection;
-    VisibleSelectionInComposedTree m_selectionInComposedTree;
+    VisibleSelectionInFlatTree m_selectionInFlatTree;
     bool m_observingVisibleSelection;
 
     // The range specified by the user, which may not be visually canonicalized
diff --git a/third_party/WebKit/Source/core/editing/VisiblePosition.cpp b/third_party/WebKit/Source/core/editing/VisiblePosition.cpp
index 095ef9f..5d3daec 100644
--- a/third_party/WebKit/Source/core/editing/VisiblePosition.cpp
+++ b/third_party/WebKit/Source/core/editing/VisiblePosition.cpp
@@ -87,14 +87,14 @@
     return VisiblePosition::create(positionWithAffinity);
 }
 
-VisiblePositionInComposedTree createVisiblePosition(const PositionInComposedTree& position, TextAffinity affinity)
+VisiblePositionInFlatTree createVisiblePosition(const PositionInFlatTree& position, TextAffinity affinity)
 {
-    return VisiblePositionInComposedTree::create(PositionInComposedTreeWithAffinity(position, affinity));
+    return VisiblePositionInFlatTree::create(PositionInFlatTreeWithAffinity(position, affinity));
 }
 
-VisiblePositionInComposedTree createVisiblePosition(const PositionInComposedTreeWithAffinity& positionWithAffinity)
+VisiblePositionInFlatTree createVisiblePosition(const PositionInFlatTreeWithAffinity& positionWithAffinity)
 {
-    return VisiblePositionInComposedTree::create(positionWithAffinity);
+    return VisiblePositionInFlatTree::create(positionWithAffinity);
 }
 
 VisiblePosition createVisiblePositionInDOMTree(const Position& position, TextAffinity affinity)
@@ -102,9 +102,9 @@
     return createVisiblePosition(position, affinity);
 }
 
-VisiblePosition createVisiblePositionInDOMTree(const PositionInComposedTree& position, TextAffinity affinity)
+VisiblePosition createVisiblePositionInDOMTree(const PositionInFlatTree& position, TextAffinity affinity)
 {
-    const VisiblePositionInComposedTree visiblePosition = createVisiblePosition(position);
+    const VisiblePositionInFlatTree visiblePosition = createVisiblePosition(position);
     return createVisiblePosition(toPositionInDOMTree(visiblePosition.deepEquivalent()), affinity);
 }
 
@@ -135,7 +135,7 @@
 #endif
 
 template class CORE_TEMPLATE_EXPORT VisiblePositionTemplate<EditingStrategy>;
-template class CORE_TEMPLATE_EXPORT VisiblePositionTemplate<EditingInComposedTreeStrategy>;
+template class CORE_TEMPLATE_EXPORT VisiblePositionTemplate<EditingInFlatTreeStrategy>;
 
 } // namespace blink
 
diff --git a/third_party/WebKit/Source/core/editing/VisiblePosition.h b/third_party/WebKit/Source/core/editing/VisiblePosition.h
index 313f7df..5de0742 100644
--- a/third_party/WebKit/Source/core/editing/VisiblePosition.h
+++ b/third_party/WebKit/Source/core/editing/VisiblePosition.h
@@ -111,20 +111,20 @@
 };
 
 extern template class CORE_EXTERN_TEMPLATE_EXPORT VisiblePositionTemplate<EditingStrategy>;
-extern template class CORE_EXTERN_TEMPLATE_EXPORT VisiblePositionTemplate<EditingInComposedTreeStrategy>;
+extern template class CORE_EXTERN_TEMPLATE_EXPORT VisiblePositionTemplate<EditingInFlatTreeStrategy>;
 
 using VisiblePosition = VisiblePositionTemplate<EditingStrategy>;
-using VisiblePositionInComposedTree = VisiblePositionTemplate<EditingInComposedTreeStrategy>;
+using VisiblePositionInFlatTree = VisiblePositionTemplate<EditingInFlatTreeStrategy>;
 
 CORE_EXPORT VisiblePosition createVisiblePosition(const Position&, TextAffinity = VP_DEFAULT_AFFINITY);
 CORE_EXPORT VisiblePosition createVisiblePosition(const PositionWithAffinity&);
-CORE_EXPORT VisiblePositionInComposedTree createVisiblePosition(const PositionInComposedTree&, TextAffinity = VP_DEFAULT_AFFINITY);
-CORE_EXPORT VisiblePositionInComposedTree createVisiblePosition(const PositionInComposedTreeWithAffinity&);
+CORE_EXPORT VisiblePositionInFlatTree createVisiblePosition(const PositionInFlatTree&, TextAffinity = VP_DEFAULT_AFFINITY);
+CORE_EXPORT VisiblePositionInFlatTree createVisiblePosition(const PositionInFlatTreeWithAffinity&);
 
-// TODO(yosin) Once we have composed tree version of VisibleUnits, we should not
+// TODO(yosin) Once we have flat tree version of VisibleUnits, we should not
 // use |createVisiblePositionInDOMTree()|.
 VisiblePosition createVisiblePositionInDOMTree(const Position&, TextAffinity = VP_DEFAULT_AFFINITY);
-VisiblePosition createVisiblePositionInDOMTree(const PositionInComposedTree&, TextAffinity = VP_DEFAULT_AFFINITY);
+VisiblePosition createVisiblePositionInDOMTree(const PositionInFlatTree&, TextAffinity = VP_DEFAULT_AFFINITY);
 
 } // namespace blink
 
diff --git a/third_party/WebKit/Source/core/editing/VisiblePositionTest.cpp b/third_party/WebKit/Source/core/editing/VisiblePositionTest.cpp
index 5990ff3..d591a6b 100644
--- a/third_party/WebKit/Source/core/editing/VisiblePositionTest.cpp
+++ b/third_party/WebKit/Source/core/editing/VisiblePositionTest.cpp
@@ -30,10 +30,10 @@
     EXPECT_EQ(Position(one->firstChild(), 2), canonicalPositionOf(Position(two.get(), 0)));
     EXPECT_EQ(Position(one->firstChild(), 2), createVisiblePosition(Position(two.get(), 0)).deepEquivalent());
 
-    EXPECT_EQ(PositionInComposedTree(five->firstChild(), 2), canonicalPositionOf(PositionInComposedTree(one.get(), 0)));
-    EXPECT_EQ(PositionInComposedTree(five->firstChild(), 2), createVisiblePosition(PositionInComposedTree(one.get(), 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(four->firstChild(), 2), canonicalPositionOf(PositionInComposedTree(two.get(), 0)));
-    EXPECT_EQ(PositionInComposedTree(four->firstChild(), 2), createVisiblePosition(PositionInComposedTree(two.get(), 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(five->firstChild(), 2), canonicalPositionOf(PositionInFlatTree(one.get(), 0)));
+    EXPECT_EQ(PositionInFlatTree(five->firstChild(), 2), createVisiblePosition(PositionInFlatTree(one.get(), 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(four->firstChild(), 2), canonicalPositionOf(PositionInFlatTree(two.get(), 0)));
+    EXPECT_EQ(PositionInFlatTree(four->firstChild(), 2), createVisiblePosition(PositionInFlatTree(two.get(), 0)).deepEquivalent());
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/VisibleSelection.cpp b/third_party/WebKit/Source/core/editing/VisibleSelection.cpp
index c8ed0e7..d7d7114e 100644
--- a/third_party/WebKit/Source/core/editing/VisibleSelection.cpp
+++ b/third_party/WebKit/Source/core/editing/VisibleSelection.cpp
@@ -954,7 +954,7 @@
 #endif
 
 template class CORE_TEMPLATE_EXPORT VisibleSelectionTemplate<EditingStrategy>;
-template class CORE_TEMPLATE_EXPORT VisibleSelectionTemplate<EditingInComposedTreeStrategy>;
+template class CORE_TEMPLATE_EXPORT VisibleSelectionTemplate<EditingInFlatTreeStrategy>;
 
 } // namespace blink
 
@@ -971,12 +971,12 @@
         sel->showTreeForThis();
 }
 
-void showTree(const blink::VisibleSelectionInComposedTree& sel)
+void showTree(const blink::VisibleSelectionInFlatTree& sel)
 {
     sel.showTreeForThis();
 }
 
-void showTree(const blink::VisibleSelectionInComposedTree* sel)
+void showTree(const blink::VisibleSelectionInFlatTree* sel)
 {
     if (sel)
         sel->showTreeForThis();
diff --git a/third_party/WebKit/Source/core/editing/VisibleSelection.h b/third_party/WebKit/Source/core/editing/VisibleSelection.h
index cd22695..1916386c 100644
--- a/third_party/WebKit/Source/core/editing/VisibleSelection.h
+++ b/third_party/WebKit/Source/core/editing/VisibleSelection.h
@@ -207,10 +207,10 @@
 };
 
 extern template class CORE_EXTERN_TEMPLATE_EXPORT VisibleSelectionTemplate<EditingStrategy>;
-extern template class CORE_EXTERN_TEMPLATE_EXPORT VisibleSelectionTemplate<EditingInComposedTreeStrategy>;
+extern template class CORE_EXTERN_TEMPLATE_EXPORT VisibleSelectionTemplate<EditingInFlatTreeStrategy>;
 
 using VisibleSelection = VisibleSelectionTemplate<EditingStrategy>;
-using VisibleSelectionInComposedTree = VisibleSelectionTemplate<EditingInComposedTreeStrategy>;
+using VisibleSelectionInFlatTree = VisibleSelectionTemplate<EditingInFlatTreeStrategy>;
 
 // TODO(yosin): We should use |operator==()| instead of
 // |equalSelectionsInDOMTree()|.
@@ -229,8 +229,8 @@
 // Outside the WebCore namespace for ease of invocation from gdb.
 void showTree(const blink::VisibleSelection&);
 void showTree(const blink::VisibleSelection*);
-void showTree(const blink::VisibleSelectionInComposedTree&);
-void showTree(const blink::VisibleSelectionInComposedTree*);
+void showTree(const blink::VisibleSelectionInFlatTree&);
+void showTree(const blink::VisibleSelectionInFlatTree*);
 #endif
 
 #endif // VisibleSelection_h
diff --git a/third_party/WebKit/Source/core/editing/VisibleSelectionTest.cpp b/third_party/WebKit/Source/core/editing/VisibleSelectionTest.cpp
index c747e617..d8ba923 100644
--- a/third_party/WebKit/Source/core/editing/VisibleSelectionTest.cpp
+++ b/third_party/WebKit/Source/core/editing/VisibleSelectionTest.cpp
@@ -36,15 +36,15 @@
     }
 };
 
-static void testComposedTreePositionsToEqualToDOMTreePositions(const VisibleSelection& selection, const VisibleSelectionInComposedTree& selectionInComposedTree)
+static void testFlatTreePositionsToEqualToDOMTreePositions(const VisibleSelection& selection, const VisibleSelectionInFlatTree& selectionInFlatTree)
 {
-    // Since DOM tree positions can't be map to composed tree version, e.g.
-    // shadow root, not distributed node, we map a position in composed tree
+    // Since DOM tree positions can't be map to flat tree version, e.g.
+    // shadow root, not distributed node, we map a position in flat tree
     // to DOM tree position.
-    EXPECT_EQ(selection.start(), toPositionInDOMTree(selectionInComposedTree.start()));
-    EXPECT_EQ(selection.end(), toPositionInDOMTree(selectionInComposedTree.end()));
-    EXPECT_EQ(selection.base(), toPositionInDOMTree(selectionInComposedTree.base()));
-    EXPECT_EQ(selection.extent(), toPositionInDOMTree(selectionInComposedTree.extent()));
+    EXPECT_EQ(selection.start(), toPositionInDOMTree(selectionInFlatTree.start()));
+    EXPECT_EQ(selection.end(), toPositionInDOMTree(selectionInFlatTree.end()));
+    EXPECT_EQ(selection.base(), toPositionInDOMTree(selectionInFlatTree.base()));
+    EXPECT_EQ(selection.extent(), toPositionInDOMTree(selectionInFlatTree.extent()));
 }
 
 TEST_F(VisibleSelectionTest, expandUsingGranularity)
@@ -62,87 +62,87 @@
     Node* five = shadowRoot->getElementById("five")->firstChild();
 
     VisibleSelection selection;
-    VisibleSelectionInComposedTree selectionInComposedTree;
+    VisibleSelectionInFlatTree selectionInFlatTree;
 
     // From a position at distributed node
     selection = VisibleSelection(createVisiblePosition(Position(one, 1)));
     selection.expandUsingGranularity(WordGranularity);
-    selectionInComposedTree = VisibleSelectionInComposedTree(createVisiblePosition(PositionInComposedTree(one, 1)));
-    selectionInComposedTree.expandUsingGranularity(WordGranularity);
+    selectionInFlatTree = VisibleSelectionInFlatTree(createVisiblePosition(PositionInFlatTree(one, 1)));
+    selectionInFlatTree.expandUsingGranularity(WordGranularity);
 
     EXPECT_EQ(Position(one, 1), selection.base());
     EXPECT_EQ(Position(one, 1), selection.extent());
     EXPECT_EQ(Position(one, 0), selection.start());
     EXPECT_EQ(Position(two, 2), selection.end());
 
-    EXPECT_EQ(PositionInComposedTree(one, 1), selectionInComposedTree.base());
-    EXPECT_EQ(PositionInComposedTree(one, 1), selectionInComposedTree.extent());
-    EXPECT_EQ(PositionInComposedTree(one, 0), selectionInComposedTree.start());
-    EXPECT_EQ(PositionInComposedTree(five, 5), selectionInComposedTree.end());
+    EXPECT_EQ(PositionInFlatTree(one, 1), selectionInFlatTree.base());
+    EXPECT_EQ(PositionInFlatTree(one, 1), selectionInFlatTree.extent());
+    EXPECT_EQ(PositionInFlatTree(one, 0), selectionInFlatTree.start());
+    EXPECT_EQ(PositionInFlatTree(five, 5), selectionInFlatTree.end());
 
     // From a position at distributed node
     selection = VisibleSelection(createVisiblePosition(Position(two, 1)));
     selection.expandUsingGranularity(WordGranularity);
-    selectionInComposedTree = VisibleSelectionInComposedTree(createVisiblePosition(PositionInComposedTree(two, 1)));
-    selectionInComposedTree.expandUsingGranularity(WordGranularity);
+    selectionInFlatTree = VisibleSelectionInFlatTree(createVisiblePosition(PositionInFlatTree(two, 1)));
+    selectionInFlatTree.expandUsingGranularity(WordGranularity);
 
     EXPECT_EQ(Position(two, 1), selection.base());
     EXPECT_EQ(Position(two, 1), selection.extent());
     EXPECT_EQ(Position(one, 0), selection.start());
     EXPECT_EQ(Position(two, 2), selection.end());
 
-    EXPECT_EQ(PositionInComposedTree(two, 1), selectionInComposedTree.base());
-    EXPECT_EQ(PositionInComposedTree(two, 1), selectionInComposedTree.extent());
-    EXPECT_EQ(PositionInComposedTree(three, 0), selectionInComposedTree.start());
-    EXPECT_EQ(PositionInComposedTree(four, 4), selectionInComposedTree.end());
+    EXPECT_EQ(PositionInFlatTree(two, 1), selectionInFlatTree.base());
+    EXPECT_EQ(PositionInFlatTree(two, 1), selectionInFlatTree.extent());
+    EXPECT_EQ(PositionInFlatTree(three, 0), selectionInFlatTree.start());
+    EXPECT_EQ(PositionInFlatTree(four, 4), selectionInFlatTree.end());
 
     // From a position at node in shadow tree
     selection = VisibleSelection(createVisiblePosition(Position(three, 1)));
     selection.expandUsingGranularity(WordGranularity);
-    selectionInComposedTree = VisibleSelectionInComposedTree(createVisiblePosition(PositionInComposedTree(three, 1)));
-    selectionInComposedTree.expandUsingGranularity(WordGranularity);
+    selectionInFlatTree = VisibleSelectionInFlatTree(createVisiblePosition(PositionInFlatTree(three, 1)));
+    selectionInFlatTree.expandUsingGranularity(WordGranularity);
 
     EXPECT_EQ(Position(three, 1), selection.base());
     EXPECT_EQ(Position(three, 1), selection.extent());
     EXPECT_EQ(Position(three, 0), selection.start());
     EXPECT_EQ(Position(four, 4), selection.end());
 
-    EXPECT_EQ(PositionInComposedTree(three, 1), selectionInComposedTree.base());
-    EXPECT_EQ(PositionInComposedTree(three, 1), selectionInComposedTree.extent());
-    EXPECT_EQ(PositionInComposedTree(three, 0), selectionInComposedTree.start());
-    EXPECT_EQ(PositionInComposedTree(four, 4), selectionInComposedTree.end());
+    EXPECT_EQ(PositionInFlatTree(three, 1), selectionInFlatTree.base());
+    EXPECT_EQ(PositionInFlatTree(three, 1), selectionInFlatTree.extent());
+    EXPECT_EQ(PositionInFlatTree(three, 0), selectionInFlatTree.start());
+    EXPECT_EQ(PositionInFlatTree(four, 4), selectionInFlatTree.end());
 
     // From a position at node in shadow tree
     selection = VisibleSelection(createVisiblePosition(Position(four, 1)));
     selection.expandUsingGranularity(WordGranularity);
-    selectionInComposedTree = VisibleSelectionInComposedTree(createVisiblePosition(PositionInComposedTree(four, 1)));
-    selectionInComposedTree.expandUsingGranularity(WordGranularity);
+    selectionInFlatTree = VisibleSelectionInFlatTree(createVisiblePosition(PositionInFlatTree(four, 1)));
+    selectionInFlatTree.expandUsingGranularity(WordGranularity);
 
     EXPECT_EQ(Position(four, 1), selection.base());
     EXPECT_EQ(Position(four, 1), selection.extent());
     EXPECT_EQ(Position(three, 0), selection.start());
     EXPECT_EQ(Position(four, 4), selection.end());
 
-    EXPECT_EQ(PositionInComposedTree(four, 1), selectionInComposedTree.base());
-    EXPECT_EQ(PositionInComposedTree(four, 1), selectionInComposedTree.extent());
-    EXPECT_EQ(PositionInComposedTree(three, 0), selectionInComposedTree.start());
-    EXPECT_EQ(PositionInComposedTree(four, 4), selectionInComposedTree.end());
+    EXPECT_EQ(PositionInFlatTree(four, 1), selectionInFlatTree.base());
+    EXPECT_EQ(PositionInFlatTree(four, 1), selectionInFlatTree.extent());
+    EXPECT_EQ(PositionInFlatTree(three, 0), selectionInFlatTree.start());
+    EXPECT_EQ(PositionInFlatTree(four, 4), selectionInFlatTree.end());
 
     // From a position at node in shadow tree
     selection = VisibleSelection(createVisiblePosition(Position(five, 1)));
     selection.expandUsingGranularity(WordGranularity);
-    selectionInComposedTree = VisibleSelectionInComposedTree(createVisiblePosition(PositionInComposedTree(five, 1)));
-    selectionInComposedTree.expandUsingGranularity(WordGranularity);
+    selectionInFlatTree = VisibleSelectionInFlatTree(createVisiblePosition(PositionInFlatTree(five, 1)));
+    selectionInFlatTree.expandUsingGranularity(WordGranularity);
 
     EXPECT_EQ(Position(five, 1), selection.base());
     EXPECT_EQ(Position(five, 1), selection.extent());
     EXPECT_EQ(Position(five, 0), selection.start());
     EXPECT_EQ(Position(five, 5), selection.end());
 
-    EXPECT_EQ(PositionInComposedTree(five, 1), selectionInComposedTree.base());
-    EXPECT_EQ(PositionInComposedTree(five, 1), selectionInComposedTree.extent());
-    EXPECT_EQ(PositionInComposedTree(one, 0), selectionInComposedTree.start());
-    EXPECT_EQ(PositionInComposedTree(five, 5), selectionInComposedTree.end());
+    EXPECT_EQ(PositionInFlatTree(five, 1), selectionInFlatTree.base());
+    EXPECT_EQ(PositionInFlatTree(five, 1), selectionInFlatTree.extent());
+    EXPECT_EQ(PositionInFlatTree(one, 0), selectionInFlatTree.start());
+    EXPECT_EQ(PositionInFlatTree(five, 5), selectionInFlatTree.end());
 }
 
 TEST_F(VisibleSelectionTest, Initialisation)
@@ -150,20 +150,20 @@
     setBodyContent(LOREM_IPSUM);
 
     VisibleSelection selection;
-    VisibleSelectionInComposedTree selectionInComposedTree;
+    VisibleSelectionInFlatTree selectionInFlatTree;
     setSelection(selection, 0);
-    setSelection(selectionInComposedTree, 0);
+    setSelection(selectionInFlatTree, 0);
 
     EXPECT_FALSE(selection.isNone());
-    EXPECT_FALSE(selectionInComposedTree.isNone());
+    EXPECT_FALSE(selectionInFlatTree.isNone());
     EXPECT_TRUE(selection.isCaret());
-    EXPECT_TRUE(selectionInComposedTree.isCaret());
+    EXPECT_TRUE(selectionInFlatTree.isCaret());
 
     RefPtrWillBeRawPtr<Range> range = firstRangeOf(selection);
     EXPECT_EQ(0, range->startOffset());
     EXPECT_EQ(0, range->endOffset());
     EXPECT_EQ("", range->text());
-    testComposedTreePositionsToEqualToDOMTreePositions(selection, selectionInComposedTree);
+    testFlatTreePositionsToEqualToDOMTreePositions(selection, selectionInFlatTree);
 }
 
 TEST_F(VisibleSelectionTest, ShadowCrossing)
@@ -179,12 +179,12 @@
     RefPtrWillBeRawPtr<Element> six = shadowRoot->querySelector("#s6", ASSERT_NO_EXCEPTION);
 
     VisibleSelection selection(Position::firstPositionInNode(one.get()), Position::lastPositionInNode(shadowRoot.get()));
-    VisibleSelectionInComposedTree selectionInComposedTree(PositionInComposedTree::firstPositionInNode(one.get()), PositionInComposedTree::lastPositionInNode(host.get()));
+    VisibleSelectionInFlatTree selectionInFlatTree(PositionInFlatTree::firstPositionInNode(one.get()), PositionInFlatTree::lastPositionInNode(host.get()));
 
     EXPECT_EQ(Position(host.get(), PositionAnchorType::BeforeAnchor), selection.start());
     EXPECT_EQ(Position(one->firstChild(), 0), selection.end());
-    EXPECT_EQ(PositionInComposedTree(one->firstChild(), 0), selectionInComposedTree.start());
-    EXPECT_EQ(PositionInComposedTree(six->firstChild(), 2), selectionInComposedTree.end());
+    EXPECT_EQ(PositionInFlatTree(one->firstChild(), 0), selectionInFlatTree.start());
+    EXPECT_EQ(PositionInFlatTree(six->firstChild(), 2), selectionInFlatTree.end());
 }
 
 TEST_F(VisibleSelectionTest, ShadowV0DistributedNodes)
@@ -200,12 +200,12 @@
     RefPtrWillBeRawPtr<Element> five = shadowRoot->querySelector("#s5", ASSERT_NO_EXCEPTION);
 
     VisibleSelection selection(Position::firstPositionInNode(one.get()), Position::lastPositionInNode(two.get()));
-    VisibleSelectionInComposedTree selectionInComposedTree(PositionInComposedTree::firstPositionInNode(one.get()), PositionInComposedTree::lastPositionInNode(two.get()));
+    VisibleSelectionInFlatTree selectionInFlatTree(PositionInFlatTree::firstPositionInNode(one.get()), PositionInFlatTree::lastPositionInNode(two.get()));
 
     EXPECT_EQ(Position(one->firstChild(), 0), selection.start());
     EXPECT_EQ(Position(two->firstChild(), 2), selection.end());
-    EXPECT_EQ(PositionInComposedTree(five->firstChild(), 0), selectionInComposedTree.start());
-    EXPECT_EQ(PositionInComposedTree(five->firstChild(), 2), selectionInComposedTree.end());
+    EXPECT_EQ(PositionInFlatTree(five->firstChild(), 0), selectionInFlatTree.start());
+    EXPECT_EQ(PositionInFlatTree(five->firstChild(), 2), selectionInFlatTree.end());
 }
 
 TEST_F(VisibleSelectionTest, ShadowNested)
@@ -217,7 +217,7 @@
     RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = setShadowContent(shadowContent, "host");
     RefPtrWillBeRawPtr<ShadowRoot> shadowRoot2 = createShadowRootForElementWithIDAndSetInnerHTML(*shadowRoot, "s5", shadowContent2);
 
-    // Composed tree is something like below:
+    // Flat tree is something like below:
     //  <p id="host">
     //    <span id="s4">44</span>
     //    <b id="two">22</b>
@@ -231,12 +231,12 @@
     RefPtrWillBeRawPtr<Element> eight = shadowRoot2->querySelector("#s8", ASSERT_NO_EXCEPTION);
 
     VisibleSelection selection(Position::firstPositionInNode(one.get()), Position::lastPositionInNode(shadowRoot2.get()));
-    VisibleSelectionInComposedTree selectionInComposedTree(PositionInComposedTree::firstPositionInNode(one.get()), PositionInComposedTree::afterNode(eight.get()));
+    VisibleSelectionInFlatTree selectionInFlatTree(PositionInFlatTree::firstPositionInNode(one.get()), PositionInFlatTree::afterNode(eight.get()));
 
     EXPECT_EQ(Position(host.get(), PositionAnchorType::BeforeAnchor), selection.start());
     EXPECT_EQ(Position(one->firstChild(), 0), selection.end());
-    EXPECT_EQ(PositionInComposedTree(eight->firstChild(), 2), selectionInComposedTree.start());
-    EXPECT_EQ(PositionInComposedTree(eight->firstChild(), 2), selectionInComposedTree.end());
+    EXPECT_EQ(PositionInFlatTree(eight->firstChild(), 2), selectionInFlatTree.start());
+    EXPECT_EQ(PositionInFlatTree(eight->firstChild(), 2), selectionInFlatTree.end());
 }
 
 TEST_F(VisibleSelectionTest, WordGranularity)
@@ -244,35 +244,35 @@
     setBodyContent(LOREM_IPSUM);
 
     VisibleSelection selection;
-    VisibleSelectionInComposedTree selectionInComposedTree;
+    VisibleSelectionInFlatTree selectionInFlatTree;
 
     // Beginning of a word.
     {
         setSelection(selection, 0);
-        setSelection(selectionInComposedTree, 0);
+        setSelection(selectionInFlatTree, 0);
         selection.expandUsingGranularity(WordGranularity);
-        selectionInComposedTree.expandUsingGranularity(WordGranularity);
+        selectionInFlatTree.expandUsingGranularity(WordGranularity);
 
         RefPtrWillBeRawPtr<Range> range = firstRangeOf(selection);
         EXPECT_EQ(0, range->startOffset());
         EXPECT_EQ(5, range->endOffset());
         EXPECT_EQ("Lorem", range->text());
-        testComposedTreePositionsToEqualToDOMTreePositions(selection, selectionInComposedTree);
+        testFlatTreePositionsToEqualToDOMTreePositions(selection, selectionInFlatTree);
 
     }
 
     // Middle of a word.
     {
         setSelection(selection, 8);
-        setSelection(selectionInComposedTree, 8);
+        setSelection(selectionInFlatTree, 8);
         selection.expandUsingGranularity(WordGranularity);
-        selectionInComposedTree.expandUsingGranularity(WordGranularity);
+        selectionInFlatTree.expandUsingGranularity(WordGranularity);
 
         RefPtrWillBeRawPtr<Range> range = firstRangeOf(selection);
         EXPECT_EQ(6, range->startOffset());
         EXPECT_EQ(11, range->endOffset());
         EXPECT_EQ("ipsum", range->text());
-        testComposedTreePositionsToEqualToDOMTreePositions(selection, selectionInComposedTree);
+        testFlatTreePositionsToEqualToDOMTreePositions(selection, selectionInFlatTree);
 
     }
 
@@ -281,15 +281,15 @@
     // of the space...
     {
         setSelection(selection, 5);
-        setSelection(selectionInComposedTree, 5);
+        setSelection(selectionInFlatTree, 5);
         selection.expandUsingGranularity(WordGranularity);
-        selectionInComposedTree.expandUsingGranularity(WordGranularity);
+        selectionInFlatTree.expandUsingGranularity(WordGranularity);
 
         RefPtrWillBeRawPtr<Range> range = firstRangeOf(selection);
         EXPECT_EQ(5, range->startOffset());
         EXPECT_EQ(6, range->endOffset());
         EXPECT_EQ(" ", range->text());
-        testComposedTreePositionsToEqualToDOMTreePositions(selection, selectionInComposedTree);
+        testFlatTreePositionsToEqualToDOMTreePositions(selection, selectionInFlatTree);
     }
 
     // Before comma.
@@ -297,57 +297,57 @@
     // of the comma.
     {
         setSelection(selection, 26);
-        setSelection(selectionInComposedTree, 26);
+        setSelection(selectionInFlatTree, 26);
         selection.expandUsingGranularity(WordGranularity);
-        selectionInComposedTree.expandUsingGranularity(WordGranularity);
+        selectionInFlatTree.expandUsingGranularity(WordGranularity);
 
         RefPtrWillBeRawPtr<Range> range = firstRangeOf(selection);
         EXPECT_EQ(26, range->startOffset());
         EXPECT_EQ(27, range->endOffset());
         EXPECT_EQ(",", range->text());
-        testComposedTreePositionsToEqualToDOMTreePositions(selection, selectionInComposedTree);
+        testFlatTreePositionsToEqualToDOMTreePositions(selection, selectionInFlatTree);
     }
 
     // After comma.
     {
         setSelection(selection, 27);
-        setSelection(selectionInComposedTree, 27);
+        setSelection(selectionInFlatTree, 27);
         selection.expandUsingGranularity(WordGranularity);
-        selectionInComposedTree.expandUsingGranularity(WordGranularity);
+        selectionInFlatTree.expandUsingGranularity(WordGranularity);
 
         RefPtrWillBeRawPtr<Range> range = firstRangeOf(selection);
         EXPECT_EQ(27, range->startOffset());
         EXPECT_EQ(28, range->endOffset());
         EXPECT_EQ(" ", range->text());
-        testComposedTreePositionsToEqualToDOMTreePositions(selection, selectionInComposedTree);
+        testFlatTreePositionsToEqualToDOMTreePositions(selection, selectionInFlatTree);
     }
 
     // When selecting part of a word.
     {
         setSelection(selection, 0, 1);
-        setSelection(selectionInComposedTree, 0, 1);
+        setSelection(selectionInFlatTree, 0, 1);
         selection.expandUsingGranularity(WordGranularity);
-        selectionInComposedTree.expandUsingGranularity(WordGranularity);
+        selectionInFlatTree.expandUsingGranularity(WordGranularity);
 
         RefPtrWillBeRawPtr<Range> range = firstRangeOf(selection);
         EXPECT_EQ(0, range->startOffset());
         EXPECT_EQ(5, range->endOffset());
         EXPECT_EQ("Lorem", range->text());
-        testComposedTreePositionsToEqualToDOMTreePositions(selection, selectionInComposedTree);
+        testFlatTreePositionsToEqualToDOMTreePositions(selection, selectionInFlatTree);
     }
 
     // When selecting part of two words.
     {
         setSelection(selection, 2, 8);
-        setSelection(selectionInComposedTree, 2, 8);
+        setSelection(selectionInFlatTree, 2, 8);
         selection.expandUsingGranularity(WordGranularity);
-        selectionInComposedTree.expandUsingGranularity(WordGranularity);
+        selectionInFlatTree.expandUsingGranularity(WordGranularity);
 
         RefPtrWillBeRawPtr<Range> range = firstRangeOf(selection);
         EXPECT_EQ(0, range->startOffset());
         EXPECT_EQ(11, range->endOffset());
         EXPECT_EQ("Lorem ipsum", range->text());
-        testComposedTreePositionsToEqualToDOMTreePositions(selection, selectionInComposedTree);
+        testFlatTreePositionsToEqualToDOMTreePositions(selection, selectionInFlatTree);
     }
 }
 
diff --git a/third_party/WebKit/Source/core/editing/VisibleUnits.cpp b/third_party/WebKit/Source/core/editing/VisibleUnits.cpp
index 66ed3f1..28b1b18 100644
--- a/third_party/WebKit/Source/core/editing/VisibleUnits.cpp
+++ b/third_party/WebKit/Source/core/editing/VisibleUnits.cpp
@@ -162,7 +162,7 @@
     return canonicalPosition(position);
 }
 
-PositionInComposedTree canonicalPositionOf(const PositionInComposedTree& position)
+PositionInFlatTree canonicalPositionOf(const PositionInFlatTree& position)
 {
     return canonicalPosition(position);
 }
@@ -874,9 +874,9 @@
     return startOfWordAlgorithm<EditingStrategy>(c, side);
 }
 
-VisiblePositionInComposedTree startOfWord(const VisiblePositionInComposedTree& c, EWordSide side)
+VisiblePositionInFlatTree startOfWord(const VisiblePositionInFlatTree& c, EWordSide side)
 {
-    return startOfWordAlgorithm<EditingInComposedTreeStrategy>(c, side);
+    return startOfWordAlgorithm<EditingInFlatTreeStrategy>(c, side);
 }
 
 static unsigned endWordBoundary(const UChar* characters, unsigned length, unsigned offset, BoundarySearchContextAvailability mayHaveMoreContext, bool& needMoreContext)
@@ -913,9 +913,9 @@
     return endOfWordAlgorithm<EditingStrategy>(c, side);
 }
 
-VisiblePositionInComposedTree endOfWord(const VisiblePositionInComposedTree& c, EWordSide side)
+VisiblePositionInFlatTree endOfWord(const VisiblePositionInFlatTree& c, EWordSide side)
 {
-    return endOfWordAlgorithm<EditingInComposedTreeStrategy>(c, side);
+    return endOfWordAlgorithm<EditingInFlatTreeStrategy>(c, side);
 }
 
 static unsigned previousWordPositionBoundary(const UChar* characters, unsigned length, unsigned offset, BoundarySearchContextAvailability mayHaveMoreContext, bool& needMoreContext)
@@ -1009,9 +1009,9 @@
     return startOfLineAlgorithm<EditingStrategy>(currentPosition);
 }
 
-static PositionInComposedTreeWithAffinity startOfLine(const PositionInComposedTreeWithAffinity& currentPosition)
+static PositionInFlatTreeWithAffinity startOfLine(const PositionInFlatTreeWithAffinity& currentPosition)
 {
-    return startOfLineAlgorithm<EditingInComposedTreeStrategy>(currentPosition);
+    return startOfLineAlgorithm<EditingInFlatTreeStrategy>(currentPosition);
 }
 
 // FIXME: Rename this function to reflect the fact it ignores bidi levels.
@@ -1020,7 +1020,7 @@
     return createVisiblePosition(startOfLine(currentPosition.toPositionWithAffinity()));
 }
 
-VisiblePositionInComposedTree startOfLine(const VisiblePositionInComposedTree& currentPosition)
+VisiblePositionInFlatTree startOfLine(const VisiblePositionInFlatTree& currentPosition)
 {
     return createVisiblePosition(startOfLine(currentPosition.toPositionWithAffinity()));
 }
@@ -1045,9 +1045,9 @@
     return createVisiblePosition(logicalStartOfLineAlgorithm<EditingStrategy>(currentPosition.toPositionWithAffinity()));
 }
 
-VisiblePositionInComposedTree logicalStartOfLine(const VisiblePositionInComposedTree& currentPosition)
+VisiblePositionInFlatTree logicalStartOfLine(const VisiblePositionInFlatTree& currentPosition)
 {
-    return createVisiblePosition(logicalStartOfLineAlgorithm<EditingInComposedTreeStrategy>(currentPosition.toPositionWithAffinity()));
+    return createVisiblePosition(logicalStartOfLineAlgorithm<EditingInFlatTreeStrategy>(currentPosition.toPositionWithAffinity()));
 }
 
 template <typename Strategy>
@@ -1137,9 +1137,9 @@
     return endOfLineAlgorithm<EditingStrategy>(currentPosition);
 }
 
-VisiblePositionInComposedTree endOfLine(const VisiblePositionInComposedTree& currentPosition)
+VisiblePositionInFlatTree endOfLine(const VisiblePositionInFlatTree& currentPosition)
 {
-    return endOfLineAlgorithm<EditingInComposedTreeStrategy>(currentPosition);
+    return endOfLineAlgorithm<EditingInFlatTreeStrategy>(currentPosition);
 }
 
 template <typename Strategy>
@@ -1179,9 +1179,9 @@
     return logicalEndOfLineAlgorithm<EditingStrategy>(currentPosition);
 }
 
-VisiblePositionInComposedTree logicalEndOfLine(const VisiblePositionInComposedTree& currentPosition)
+VisiblePositionInFlatTree logicalEndOfLine(const VisiblePositionInFlatTree& currentPosition)
 {
-    return logicalEndOfLineAlgorithm<EditingInComposedTreeStrategy>(currentPosition);
+    return logicalEndOfLineAlgorithm<EditingInFlatTreeStrategy>(currentPosition);
 }
 
 template <typename Strategy>
@@ -1204,9 +1204,9 @@
     return inSameLineAlgorithm<EditingStrategy>(a, b);
 }
 
-bool inSameLine(const PositionInComposedTreeWithAffinity& position1, const PositionInComposedTreeWithAffinity& position2)
+bool inSameLine(const PositionInFlatTreeWithAffinity& position1, const PositionInFlatTreeWithAffinity& position2)
 {
-    return inSameLineAlgorithm<EditingInComposedTreeStrategy>(position1, position2);
+    return inSameLineAlgorithm<EditingInFlatTreeStrategy>(position1, position2);
 }
 
 bool inSameLine(const VisiblePosition& position1, const VisiblePosition& position2)
@@ -1214,7 +1214,7 @@
     return inSameLine(position1.toPositionWithAffinity(), position2.toPositionWithAffinity());
 }
 
-bool inSameLine(const VisiblePositionInComposedTree& position1, const VisiblePositionInComposedTree& position2)
+bool inSameLine(const VisiblePositionInFlatTree& position1, const VisiblePositionInFlatTree& position2)
 {
     return inSameLine(position1.toPositionWithAffinity(), position2.toPositionWithAffinity());
 }
@@ -1230,9 +1230,9 @@
     return isStartOfLineAlgorithm<EditingStrategy>(p);
 }
 
-bool isStartOfLine(const VisiblePositionInComposedTree& p)
+bool isStartOfLine(const VisiblePositionInFlatTree& p)
 {
-    return isStartOfLineAlgorithm<EditingInComposedTreeStrategy>(p);
+    return isStartOfLineAlgorithm<EditingInFlatTreeStrategy>(p);
 }
 
 template <typename Strategy>
@@ -1246,9 +1246,9 @@
     return isEndOfLineAlgorithm<EditingStrategy>(p);
 }
 
-bool isEndOfLine(const VisiblePositionInComposedTree& p)
+bool isEndOfLine(const VisiblePositionInFlatTree& p)
 {
-    return isEndOfLineAlgorithm<EditingInComposedTreeStrategy>(p);
+    return isEndOfLineAlgorithm<EditingInFlatTreeStrategy>(p);
 }
 
 template <typename Strategy>
@@ -1262,9 +1262,9 @@
     return isLogicalEndOfLineAlgorithm<EditingStrategy>(p);
 }
 
-bool isLogicalEndOfLine(const VisiblePositionInComposedTree& p)
+bool isLogicalEndOfLine(const VisiblePositionInFlatTree& p)
 {
-    return isLogicalEndOfLineAlgorithm<EditingInComposedTreeStrategy>(p);
+    return isLogicalEndOfLineAlgorithm<EditingInFlatTreeStrategy>(p);
 }
 
 static inline LayoutPoint absoluteLineDirectionPointToLocalPointInBlock(RootInlineBox* root, LayoutUnit lineDirectionPoint)
@@ -1410,9 +1410,9 @@
     return startOfSentenceAlgorithm<EditingStrategy>(c);
 }
 
-VisiblePositionInComposedTree startOfSentence(const VisiblePositionInComposedTree& c)
+VisiblePositionInFlatTree startOfSentence(const VisiblePositionInFlatTree& c)
 {
-    return startOfSentenceAlgorithm<EditingInComposedTreeStrategy>(c);
+    return startOfSentenceAlgorithm<EditingInFlatTreeStrategy>(c);
 }
 
 static unsigned endSentenceBoundary(const UChar* characters, unsigned length, unsigned, BoundarySearchContextAvailability, bool&)
@@ -1434,9 +1434,9 @@
     return endOfSentenceAlgorithm<EditingStrategy>(c);
 }
 
-VisiblePositionInComposedTree endOfSentence(const VisiblePositionInComposedTree& c)
+VisiblePositionInFlatTree endOfSentence(const VisiblePositionInFlatTree& c)
 {
-    return endOfSentenceAlgorithm<EditingInComposedTreeStrategy>(c);
+    return endOfSentenceAlgorithm<EditingInFlatTreeStrategy>(c);
 }
 
 static unsigned previousSentencePositionBoundary(const UChar* characters, unsigned length, unsigned, BoundarySearchContextAvailability, bool&)
@@ -1548,9 +1548,9 @@
     return startOfParagraphAlgorithm<EditingStrategy>(c, boundaryCrossingRule);
 }
 
-VisiblePositionInComposedTree startOfParagraph(const VisiblePositionInComposedTree& c, EditingBoundaryCrossingRule boundaryCrossingRule)
+VisiblePositionInFlatTree startOfParagraph(const VisiblePositionInFlatTree& c, EditingBoundaryCrossingRule boundaryCrossingRule)
 {
-    return startOfParagraphAlgorithm<EditingInComposedTreeStrategy>(c, boundaryCrossingRule);
+    return startOfParagraphAlgorithm<EditingInFlatTreeStrategy>(c, boundaryCrossingRule);
 }
 
 template <typename Strategy>
@@ -1635,9 +1635,9 @@
     return endOfParagraphAlgorithm<EditingStrategy>(c, boundaryCrossingRule);
 }
 
-VisiblePositionInComposedTree endOfParagraph(const VisiblePositionInComposedTree& c, EditingBoundaryCrossingRule boundaryCrossingRule)
+VisiblePositionInFlatTree endOfParagraph(const VisiblePositionInFlatTree& c, EditingBoundaryCrossingRule boundaryCrossingRule)
 {
-    return endOfParagraphAlgorithm<EditingInComposedTreeStrategy>(c, boundaryCrossingRule);
+    return endOfParagraphAlgorithm<EditingInFlatTreeStrategy>(c, boundaryCrossingRule);
 }
 
 // FIXME: isStartOfParagraph(startOfNextParagraph(pos)) is not always true
@@ -1668,9 +1668,9 @@
     return isStartOfParagraphAlgorithm<EditingStrategy>(pos, boundaryCrossingRule);
 }
 
-bool isStartOfParagraph(const VisiblePositionInComposedTree& pos, EditingBoundaryCrossingRule boundaryCrossingRule)
+bool isStartOfParagraph(const VisiblePositionInFlatTree& pos, EditingBoundaryCrossingRule boundaryCrossingRule)
 {
-    return isStartOfParagraphAlgorithm<EditingInComposedTreeStrategy>(pos, boundaryCrossingRule);
+    return isStartOfParagraphAlgorithm<EditingInFlatTreeStrategy>(pos, boundaryCrossingRule);
 }
 
 template <typename Strategy>
@@ -1684,9 +1684,9 @@
     return isEndOfParagraphAlgorithm<EditingStrategy>(pos, boundaryCrossingRule);
 }
 
-bool isEndOfParagraph(const VisiblePositionInComposedTree& pos, EditingBoundaryCrossingRule boundaryCrossingRule)
+bool isEndOfParagraph(const VisiblePositionInFlatTree& pos, EditingBoundaryCrossingRule boundaryCrossingRule)
 {
-    return isEndOfParagraphAlgorithm<EditingInComposedTreeStrategy>(pos, boundaryCrossingRule);
+    return isEndOfParagraphAlgorithm<EditingInFlatTreeStrategy>(pos, boundaryCrossingRule);
 }
 
 VisiblePosition previousParagraphPosition(const VisiblePosition& p, LayoutUnit x)
@@ -1761,9 +1761,9 @@
     return startOfDocumentAlgorithm<EditingStrategy>(c);
 }
 
-VisiblePositionInComposedTree startOfDocument(const VisiblePositionInComposedTree& c)
+VisiblePositionInFlatTree startOfDocument(const VisiblePositionInFlatTree& c)
 {
-    return startOfDocumentAlgorithm<EditingInComposedTreeStrategy>(c);
+    return startOfDocumentAlgorithm<EditingInFlatTreeStrategy>(c);
 }
 
 template <typename Strategy>
@@ -1782,9 +1782,9 @@
     return endOfDocumentAlgorithm<EditingStrategy>(c);
 }
 
-VisiblePositionInComposedTree endOfDocument(const VisiblePositionInComposedTree& c)
+VisiblePositionInFlatTree endOfDocument(const VisiblePositionInFlatTree& c)
 {
-    return endOfDocumentAlgorithm<EditingInComposedTreeStrategy>(c);
+    return endOfDocumentAlgorithm<EditingInFlatTreeStrategy>(c);
 }
 
 bool isStartOfDocument(const VisiblePosition& p)
@@ -1824,11 +1824,11 @@
 
 // TODO(yosin) We should rename |isEndOfEditableOrNonEditableContent()| what
 // this function does, e.g. |isLastVisiblePositionOrEndOfInnerEditor()|.
-bool isEndOfEditableOrNonEditableContent(const VisiblePositionInComposedTree& position)
+bool isEndOfEditableOrNonEditableContent(const VisiblePositionInFlatTree& position)
 {
     if (position.isNull())
         return false;
-    const VisiblePositionInComposedTree nextPosition = nextPositionOf(position);
+    const VisiblePositionInFlatTree nextPosition = nextPositionOf(position);
     if (nextPosition.isNull())
         return true;
     // In DOM version, following condition, the last position of inner editor
@@ -2085,9 +2085,9 @@
     return computeInlineBoxPositionTemplate<EditingStrategy>(position, affinity);
 }
 
-InlineBoxPosition computeInlineBoxPosition(const PositionInComposedTree& position, TextAffinity affinity)
+InlineBoxPosition computeInlineBoxPosition(const PositionInFlatTree& position, TextAffinity affinity)
 {
-    return computeInlineBoxPositionTemplate<EditingInComposedTreeStrategy>(position, affinity);
+    return computeInlineBoxPositionTemplate<EditingInFlatTreeStrategy>(position, affinity);
 }
 
 InlineBoxPosition computeInlineBoxPosition(const VisiblePosition& position)
@@ -2095,7 +2095,7 @@
     return computeInlineBoxPosition(position.deepEquivalent(), position.affinity());
 }
 
-InlineBoxPosition computeInlineBoxPosition(const VisiblePositionInComposedTree& position)
+InlineBoxPosition computeInlineBoxPosition(const VisiblePositionInFlatTree& position)
 {
     return computeInlineBoxPosition(position.deepEquivalent(), position.affinity());
 }
@@ -2105,9 +2105,9 @@
     return computeInlineBoxPositionTemplate<EditingStrategy>(position, affinity, primaryDirection);
 }
 
-InlineBoxPosition computeInlineBoxPosition(const PositionInComposedTree& position, TextAffinity affinity, TextDirection primaryDirection)
+InlineBoxPosition computeInlineBoxPosition(const PositionInFlatTree& position, TextAffinity affinity, TextDirection primaryDirection)
 {
-    return computeInlineBoxPositionTemplate<EditingInComposedTreeStrategy>(position, affinity, primaryDirection);
+    return computeInlineBoxPositionTemplate<EditingInFlatTreeStrategy>(position, affinity, primaryDirection);
 }
 
 template <typename Strategy>
@@ -2136,9 +2136,9 @@
     return localCaretRectOfPositionTemplate<EditingStrategy>(position, layoutObject);
 }
 
-LayoutRect localCaretRectOfPosition(const PositionInComposedTreeWithAffinity& position, LayoutObject*& layoutObject)
+LayoutRect localCaretRectOfPosition(const PositionInFlatTreeWithAffinity& position, LayoutObject*& layoutObject)
 {
-    return localCaretRectOfPositionTemplate<EditingInComposedTreeStrategy>(position, layoutObject);
+    return localCaretRectOfPositionTemplate<EditingInFlatTreeStrategy>(position, layoutObject);
 }
 
 static int boundingBoxLogicalHeight(LayoutObject *o, const IntRect &rect)
@@ -2587,9 +2587,9 @@
     return mostBackwardCaretPosition<EditingStrategy>(position, rule);
 }
 
-PositionInComposedTree mostBackwardCaretPosition(const PositionInComposedTree& position, EditingBoundaryCrossingRule rule)
+PositionInFlatTree mostBackwardCaretPosition(const PositionInFlatTree& position, EditingBoundaryCrossingRule rule)
 {
-    return mostBackwardCaretPosition<EditingInComposedTreeStrategy>(position, rule);
+    return mostBackwardCaretPosition<EditingInFlatTreeStrategy>(position, rule);
 }
 
 template <typename Strategy>
@@ -2719,9 +2719,9 @@
     return mostForwardCaretPosition<EditingStrategy>(position, rule);
 }
 
-PositionInComposedTree mostForwardCaretPosition(const PositionInComposedTree& position, EditingBoundaryCrossingRule rule)
+PositionInFlatTree mostForwardCaretPosition(const PositionInFlatTree& position, EditingBoundaryCrossingRule rule)
 {
-    return mostForwardCaretPosition<EditingInComposedTreeStrategy>(position, rule);
+    return mostForwardCaretPosition<EditingInFlatTreeStrategy>(position, rule);
 }
 
 // Returns true if the visually equivalent positions around have different
@@ -2817,9 +2817,9 @@
     return isVisuallyEquivalentCandidateAlgorithm<EditingStrategy>(position);
 }
 
-bool isVisuallyEquivalentCandidate(const PositionInComposedTree& position)
+bool isVisuallyEquivalentCandidate(const PositionInFlatTree& position)
 {
-    return isVisuallyEquivalentCandidateAlgorithm<EditingInComposedTreeStrategy>(position);
+    return isVisuallyEquivalentCandidateAlgorithm<EditingInFlatTreeStrategy>(position);
 }
 
 template <typename Strategy>
@@ -2838,9 +2838,9 @@
     return absoluteCaretBoundsOfAlgorithm<EditingStrategy>(visiblePosition);
 }
 
-IntRect absoluteCaretBoundsOf(const VisiblePositionInComposedTree& visiblePosition)
+IntRect absoluteCaretBoundsOf(const VisiblePositionInFlatTree& visiblePosition)
 {
-    return absoluteCaretBoundsOfAlgorithm<EditingInComposedTreeStrategy>(visiblePosition);
+    return absoluteCaretBoundsOfAlgorithm<EditingInFlatTreeStrategy>(visiblePosition);
 }
 
 template <typename Strategy>
@@ -2893,9 +2893,9 @@
     return characterAfterAlgorithm<EditingStrategy>(visiblePosition);
 }
 
-UChar32 characterAfter(const VisiblePositionInComposedTree& visiblePosition)
+UChar32 characterAfter(const VisiblePositionInFlatTree& visiblePosition)
 {
-    return characterAfterAlgorithm<EditingInComposedTreeStrategy>(visiblePosition);
+    return characterAfterAlgorithm<EditingInFlatTreeStrategy>(visiblePosition);
 }
 
 template <typename Strategy>
@@ -2909,9 +2909,9 @@
     return characterBeforeAlgorithm<EditingStrategy>(visiblePosition);
 }
 
-UChar32 characterBefore(const VisiblePositionInComposedTree& visiblePosition)
+UChar32 characterBefore(const VisiblePositionInFlatTree& visiblePosition)
 {
-    return characterBeforeAlgorithm<EditingInComposedTreeStrategy>(visiblePosition);
+    return characterBeforeAlgorithm<EditingInFlatTreeStrategy>(visiblePosition);
 }
 
 template <typename Strategy>
@@ -3085,9 +3085,9 @@
     return leftPositionOfAlgorithm<EditingStrategy>(visiblePosition);
 }
 
-VisiblePositionInComposedTree leftPositionOf(const VisiblePositionInComposedTree& visiblePosition)
+VisiblePositionInFlatTree leftPositionOf(const VisiblePositionInFlatTree& visiblePosition)
 {
-    return leftPositionOfAlgorithm<EditingInComposedTreeStrategy>(visiblePosition);
+    return leftPositionOfAlgorithm<EditingInFlatTreeStrategy>(visiblePosition);
 }
 
 template <typename Strategy>
@@ -3263,9 +3263,9 @@
     return rightPositionOfAlgorithm<EditingStrategy>(visiblePosition);
 }
 
-VisiblePositionInComposedTree rightPositionOf(const VisiblePositionInComposedTree& visiblePosition)
+VisiblePositionInFlatTree rightPositionOf(const VisiblePositionInFlatTree& visiblePosition)
 {
-    return rightPositionOfAlgorithm<EditingInComposedTreeStrategy>(visiblePosition);
+    return rightPositionOfAlgorithm<EditingInFlatTreeStrategy>(visiblePosition);
 }
 
 template <typename Strategy>
@@ -3290,9 +3290,9 @@
     return nextPositionOfAlgorithm<EditingStrategy>(visiblePosition, rule);
 }
 
-VisiblePositionInComposedTree nextPositionOf(const VisiblePositionInComposedTree& visiblePosition, EditingBoundaryCrossingRule rule)
+VisiblePositionInFlatTree nextPositionOf(const VisiblePositionInFlatTree& visiblePosition, EditingBoundaryCrossingRule rule)
 {
-    return nextPositionOfAlgorithm<EditingInComposedTreeStrategy>(visiblePosition, rule);
+    return nextPositionOfAlgorithm<EditingInFlatTreeStrategy>(visiblePosition, rule);
 }
 
 template <typename Strategy>
@@ -3353,9 +3353,9 @@
     return previousPositionOfAlgorithm<EditingStrategy>(visiblePosition, rule);
 }
 
-VisiblePositionInComposedTree previousPositionOf(const VisiblePositionInComposedTree& visiblePosition, EditingBoundaryCrossingRule rule)
+VisiblePositionInFlatTree previousPositionOf(const VisiblePositionInFlatTree& visiblePosition, EditingBoundaryCrossingRule rule)
 {
-    return previousPositionOfAlgorithm<EditingInComposedTreeStrategy>(visiblePosition, rule);
+    return previousPositionOfAlgorithm<EditingInFlatTreeStrategy>(visiblePosition, rule);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/VisibleUnits.h b/third_party/WebKit/Source/core/editing/VisibleUnits.h
index 9afd6fb..4d487fbc 100644
--- a/third_party/WebKit/Source/core/editing/VisibleUnits.h
+++ b/third_party/WebKit/Source/core/editing/VisibleUnits.h
@@ -99,46 +99,46 @@
 // FIXME: This function should never be called when the line box tree is dirty.
 // See https://bugs.webkit.org/show_bug.cgi?id=97264
 CORE_EXPORT Position mostBackwardCaretPosition(const Position&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
-CORE_EXPORT PositionInComposedTree mostBackwardCaretPosition(const PositionInComposedTree&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
+CORE_EXPORT PositionInFlatTree mostBackwardCaretPosition(const PositionInFlatTree&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
 CORE_EXPORT Position mostForwardCaretPosition(const Position&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
-CORE_EXPORT PositionInComposedTree mostForwardCaretPosition(const PositionInComposedTree&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
+CORE_EXPORT PositionInFlatTree mostForwardCaretPosition(const PositionInFlatTree&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
 
 CORE_EXPORT bool isVisuallyEquivalentCandidate(const Position&);
-CORE_EXPORT bool isVisuallyEquivalentCandidate(const PositionInComposedTree&);
+CORE_EXPORT bool isVisuallyEquivalentCandidate(const PositionInFlatTree&);
 
 CORE_EXPORT Position canonicalPositionOf(const Position&);
-CORE_EXPORT PositionInComposedTree canonicalPositionOf(const PositionInComposedTree&);
+CORE_EXPORT PositionInFlatTree canonicalPositionOf(const PositionInFlatTree&);
 
 // Bounds of (possibly transformed) caret in absolute coords
 CORE_EXPORT IntRect absoluteCaretBoundsOf(const VisiblePosition&);
-CORE_EXPORT IntRect absoluteCaretBoundsOf(const VisiblePositionInComposedTree&);
+CORE_EXPORT IntRect absoluteCaretBoundsOf(const VisiblePositionInFlatTree&);
 
 CORE_EXPORT UChar32 characterAfter(const VisiblePosition&);
-CORE_EXPORT UChar32 characterAfter(const VisiblePositionInComposedTree&);
+CORE_EXPORT UChar32 characterAfter(const VisiblePositionInFlatTree&);
 CORE_EXPORT UChar32 characterBefore(const VisiblePosition&);
-CORE_EXPORT UChar32 characterBefore(const VisiblePositionInComposedTree&);
+CORE_EXPORT UChar32 characterBefore(const VisiblePositionInFlatTree&);
 
 // TODO(yosin) Since return value of |leftPositionOf()| with |VisiblePosition|
-// isn't defined well on composed tree, we should not use it for a position in
-// composed tree.
+// isn't defined well on flat tree, we should not use it for a position in
+// flat tree.
 CORE_EXPORT VisiblePosition leftPositionOf(const VisiblePosition&);
-CORE_EXPORT VisiblePositionInComposedTree leftPositionOf(const VisiblePositionInComposedTree&);
+CORE_EXPORT VisiblePositionInFlatTree leftPositionOf(const VisiblePositionInFlatTree&);
 // TODO(yosin) Since return value of |rightPositionOf()| with |VisiblePosition|
-// isn't defined well on composed tree, we should not use it for a position in
-// composed tree.
+// isn't defined well on flat tree, we should not use it for a position in
+// flat tree.
 CORE_EXPORT VisiblePosition rightPositionOf(const VisiblePosition&);
-CORE_EXPORT VisiblePositionInComposedTree rightPositionOf(const VisiblePositionInComposedTree&);
+CORE_EXPORT VisiblePositionInFlatTree rightPositionOf(const VisiblePositionInFlatTree&);
 
 CORE_EXPORT VisiblePosition nextPositionOf(const VisiblePosition&, EditingBoundaryCrossingRule = CanCrossEditingBoundary);
-CORE_EXPORT VisiblePositionInComposedTree nextPositionOf(const VisiblePositionInComposedTree&, EditingBoundaryCrossingRule = CanCrossEditingBoundary);
+CORE_EXPORT VisiblePositionInFlatTree nextPositionOf(const VisiblePositionInFlatTree&, EditingBoundaryCrossingRule = CanCrossEditingBoundary);
 CORE_EXPORT VisiblePosition previousPositionOf(const VisiblePosition&, EditingBoundaryCrossingRule = CanCrossEditingBoundary);
-CORE_EXPORT VisiblePositionInComposedTree previousPositionOf(const VisiblePositionInComposedTree&, EditingBoundaryCrossingRule = CanCrossEditingBoundary);
+CORE_EXPORT VisiblePositionInFlatTree previousPositionOf(const VisiblePositionInFlatTree&, EditingBoundaryCrossingRule = CanCrossEditingBoundary);
 
 // words
 CORE_EXPORT VisiblePosition startOfWord(const VisiblePosition&, EWordSide = RightWordIfOnBoundary);
-CORE_EXPORT VisiblePositionInComposedTree startOfWord(const VisiblePositionInComposedTree&, EWordSide = RightWordIfOnBoundary);
+CORE_EXPORT VisiblePositionInFlatTree startOfWord(const VisiblePositionInFlatTree&, EWordSide = RightWordIfOnBoundary);
 CORE_EXPORT VisiblePosition endOfWord(const VisiblePosition&, EWordSide = RightWordIfOnBoundary);
-CORE_EXPORT VisiblePositionInComposedTree endOfWord(const VisiblePositionInComposedTree&, EWordSide = RightWordIfOnBoundary);
+CORE_EXPORT VisiblePositionInFlatTree endOfWord(const VisiblePositionInFlatTree&, EWordSide = RightWordIfOnBoundary);
 VisiblePosition previousWordPosition(const VisiblePosition&);
 VisiblePosition nextWordPosition(const VisiblePosition&);
 VisiblePosition rightWordPosition(const VisiblePosition&, bool skipsSpaceWhenMovingRight);
@@ -146,9 +146,9 @@
 
 // sentences
 CORE_EXPORT VisiblePosition startOfSentence(const VisiblePosition&);
-CORE_EXPORT VisiblePositionInComposedTree startOfSentence(const VisiblePositionInComposedTree&);
+CORE_EXPORT VisiblePositionInFlatTree startOfSentence(const VisiblePositionInFlatTree&);
 CORE_EXPORT VisiblePosition endOfSentence(const VisiblePosition&);
-CORE_EXPORT VisiblePositionInComposedTree endOfSentence(const VisiblePositionInComposedTree&);
+CORE_EXPORT VisiblePositionInFlatTree endOfSentence(const VisiblePositionInFlatTree&);
 VisiblePosition previousSentencePosition(const VisiblePosition&);
 VisiblePosition nextSentencePosition(const VisiblePosition&);
 
@@ -156,51 +156,51 @@
 // TODO(yosin) Return values of |VisiblePosition| version of |startOfLine()|
 // with shadow tree isn't defined well. We should not use it for shadow tree.
 CORE_EXPORT VisiblePosition startOfLine(const VisiblePosition&);
-CORE_EXPORT VisiblePositionInComposedTree startOfLine(const VisiblePositionInComposedTree&);
+CORE_EXPORT VisiblePositionInFlatTree startOfLine(const VisiblePositionInFlatTree&);
 // TODO(yosin) Return values of |VisiblePosition| version of |endOfLine()| with
 // shadow tree isn't defined well. We should not use it for shadow tree.
 CORE_EXPORT VisiblePosition endOfLine(const VisiblePosition&);
-CORE_EXPORT VisiblePositionInComposedTree endOfLine(const VisiblePositionInComposedTree&);
+CORE_EXPORT VisiblePositionInFlatTree endOfLine(const VisiblePositionInFlatTree&);
 CORE_EXPORT VisiblePosition previousLinePosition(const VisiblePosition&, LayoutUnit lineDirectionPoint, EditableType = ContentIsEditable);
 CORE_EXPORT VisiblePosition nextLinePosition(const VisiblePosition&, LayoutUnit lineDirectionPoint, EditableType = ContentIsEditable);
 CORE_EXPORT bool inSameLine(const VisiblePosition&, const VisiblePosition&);
-CORE_EXPORT bool inSameLine(const VisiblePositionInComposedTree&, const VisiblePositionInComposedTree&);
+CORE_EXPORT bool inSameLine(const VisiblePositionInFlatTree&, const VisiblePositionInFlatTree&);
 CORE_EXPORT bool inSameLine(const PositionWithAffinity&, const PositionWithAffinity&);
-CORE_EXPORT bool inSameLine(const PositionInComposedTreeWithAffinity&, const PositionInComposedTreeWithAffinity&);
+CORE_EXPORT bool inSameLine(const PositionInFlatTreeWithAffinity&, const PositionInFlatTreeWithAffinity&);
 CORE_EXPORT bool isStartOfLine(const VisiblePosition&);
-CORE_EXPORT bool isStartOfLine(const VisiblePositionInComposedTree&);
+CORE_EXPORT bool isStartOfLine(const VisiblePositionInFlatTree&);
 CORE_EXPORT bool isEndOfLine(const VisiblePosition&);
-CORE_EXPORT bool isEndOfLine(const VisiblePositionInComposedTree&);
+CORE_EXPORT bool isEndOfLine(const VisiblePositionInFlatTree&);
 // TODO(yosin) Return values of |VisiblePosition| version of
 // |logicalStartOfLine()| with shadow tree isn't defined well. We should not use
 // it for shadow tree.
 CORE_EXPORT VisiblePosition logicalStartOfLine(const VisiblePosition&);
-CORE_EXPORT VisiblePositionInComposedTree logicalStartOfLine(const VisiblePositionInComposedTree&);
+CORE_EXPORT VisiblePositionInFlatTree logicalStartOfLine(const VisiblePositionInFlatTree&);
 // TODO(yosin) Return values of |VisiblePosition| version of
 // |logicalEndOfLine()| with shadow tree isn't defined well. We should not use
 // it for shadow tree.
 CORE_EXPORT VisiblePosition logicalEndOfLine(const VisiblePosition&);
-CORE_EXPORT VisiblePositionInComposedTree logicalEndOfLine(const VisiblePositionInComposedTree&);
+CORE_EXPORT VisiblePositionInFlatTree logicalEndOfLine(const VisiblePositionInFlatTree&);
 CORE_EXPORT bool isLogicalEndOfLine(const VisiblePosition&);
-CORE_EXPORT bool isLogicalEndOfLine(const VisiblePositionInComposedTree&);
+CORE_EXPORT bool isLogicalEndOfLine(const VisiblePositionInFlatTree&);
 VisiblePosition leftBoundaryOfLine(const VisiblePosition&, TextDirection);
 VisiblePosition rightBoundaryOfLine(const VisiblePosition&, TextDirection);
 
 // paragraphs (perhaps a misnomer, can be divided by line break elements)
 // TODO(yosin) Since return value of |startOfParagraph()| with |VisiblePosition|
-// isn't defined well on composed tree, we should not use it for a position in
-// composed tree.
+// isn't defined well on flat tree, we should not use it for a position in
+// flat tree.
 CORE_EXPORT VisiblePosition startOfParagraph(const VisiblePosition&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
-CORE_EXPORT VisiblePositionInComposedTree startOfParagraph(const VisiblePositionInComposedTree&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
+CORE_EXPORT VisiblePositionInFlatTree startOfParagraph(const VisiblePositionInFlatTree&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
 CORE_EXPORT VisiblePosition endOfParagraph(const VisiblePosition&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
-CORE_EXPORT VisiblePositionInComposedTree endOfParagraph(const VisiblePositionInComposedTree&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
+CORE_EXPORT VisiblePositionInFlatTree endOfParagraph(const VisiblePositionInFlatTree&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
 VisiblePosition startOfNextParagraph(const VisiblePosition&);
 VisiblePosition previousParagraphPosition(const VisiblePosition&, LayoutUnit x);
 VisiblePosition nextParagraphPosition(const VisiblePosition&, LayoutUnit x);
 CORE_EXPORT bool isStartOfParagraph(const VisiblePosition&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
-CORE_EXPORT bool isStartOfParagraph(const VisiblePositionInComposedTree&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
+CORE_EXPORT bool isStartOfParagraph(const VisiblePositionInFlatTree&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
 CORE_EXPORT bool isEndOfParagraph(const VisiblePosition&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
-CORE_EXPORT bool isEndOfParagraph(const VisiblePositionInComposedTree&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
+CORE_EXPORT bool isEndOfParagraph(const VisiblePositionInFlatTree&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
 bool inSameParagraph(const VisiblePosition&, const VisiblePosition&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
 
 // blocks (true paragraphs; line break elements don't break blocks)
@@ -212,9 +212,9 @@
 
 // document
 CORE_EXPORT VisiblePosition startOfDocument(const VisiblePosition&);
-CORE_EXPORT VisiblePositionInComposedTree startOfDocument(const VisiblePositionInComposedTree&);
+CORE_EXPORT VisiblePositionInFlatTree startOfDocument(const VisiblePositionInFlatTree&);
 CORE_EXPORT VisiblePosition endOfDocument(const VisiblePosition&);
-CORE_EXPORT VisiblePositionInComposedTree endOfDocument(const VisiblePositionInComposedTree&);
+CORE_EXPORT VisiblePositionInFlatTree endOfDocument(const VisiblePositionInFlatTree&);
 bool isStartOfDocument(const VisiblePosition&);
 bool isEndOfDocument(const VisiblePosition&);
 
@@ -222,18 +222,18 @@
 VisiblePosition startOfEditableContent(const VisiblePosition&);
 VisiblePosition endOfEditableContent(const VisiblePosition&);
 CORE_EXPORT bool isEndOfEditableOrNonEditableContent(const VisiblePosition&);
-CORE_EXPORT bool isEndOfEditableOrNonEditableContent(const VisiblePositionInComposedTree&);
+CORE_EXPORT bool isEndOfEditableOrNonEditableContent(const VisiblePositionInFlatTree&);
 
 CORE_EXPORT InlineBoxPosition computeInlineBoxPosition(const Position&, TextAffinity);
 CORE_EXPORT InlineBoxPosition computeInlineBoxPosition(const Position&, TextAffinity, TextDirection primaryDirection);
-CORE_EXPORT InlineBoxPosition computeInlineBoxPosition(const PositionInComposedTree&, TextAffinity);
-CORE_EXPORT InlineBoxPosition computeInlineBoxPosition(const PositionInComposedTree&, TextAffinity, TextDirection primaryDirection);
+CORE_EXPORT InlineBoxPosition computeInlineBoxPosition(const PositionInFlatTree&, TextAffinity);
+CORE_EXPORT InlineBoxPosition computeInlineBoxPosition(const PositionInFlatTree&, TextAffinity, TextDirection primaryDirection);
 CORE_EXPORT InlineBoxPosition computeInlineBoxPosition(const VisiblePosition&);
-CORE_EXPORT InlineBoxPosition computeInlineBoxPosition(const VisiblePositionInComposedTree&);
+CORE_EXPORT InlineBoxPosition computeInlineBoxPosition(const VisiblePositionInFlatTree&);
 
 // Rect is local to the returned layoutObject
 CORE_EXPORT LayoutRect localCaretRectOfPosition(const PositionWithAffinity&, LayoutObject*&);
-CORE_EXPORT LayoutRect localCaretRectOfPosition(const PositionInComposedTreeWithAffinity&, LayoutObject*&);
+CORE_EXPORT LayoutRect localCaretRectOfPosition(const PositionInFlatTreeWithAffinity&, LayoutObject*&);
 bool hasRenderedNonAnonymousDescendantsWithHeight(LayoutObject*);
 
 // Returns a hit-tested VisiblePosition for the given point in contents-space
diff --git a/third_party/WebKit/Source/core/editing/VisibleUnitsTest.cpp b/third_party/WebKit/Source/core/editing/VisibleUnitsTest.cpp
index 298fb68..746e39b 100644
--- a/third_party/WebKit/Source/core/editing/VisibleUnitsTest.cpp
+++ b/third_party/WebKit/Source/core/editing/VisibleUnitsTest.cpp
@@ -26,14 +26,14 @@
     return createVisiblePosition(Position(&anchor, offset), affinity);
 }
 
-PositionInComposedTreeWithAffinity positionWithAffinityInComposedTree(Node& anchor, int offset, TextAffinity affinity = TextAffinity::Downstream)
+PositionInFlatTreeWithAffinity positionWithAffinityInFlatTree(Node& anchor, int offset, TextAffinity affinity = TextAffinity::Downstream)
 {
-    return PositionInComposedTreeWithAffinity(canonicalPositionOf(PositionInComposedTree(&anchor, offset)), affinity);
+    return PositionInFlatTreeWithAffinity(canonicalPositionOf(PositionInFlatTree(&anchor, offset)), affinity);
 }
 
-VisiblePositionInComposedTree createVisiblePositionInComposedTree(Node& anchor, int offset, TextAffinity affinity = TextAffinity::Downstream)
+VisiblePositionInFlatTree createVisiblePositionInFlatTree(Node& anchor, int offset, TextAffinity affinity = TextAffinity::Downstream)
 {
-    return createVisiblePosition(PositionInComposedTree(&anchor, offset), affinity);
+    return createVisiblePosition(PositionInFlatTree(&anchor, offset), affinity);
 }
 
 } // namespace
@@ -61,10 +61,10 @@
     RefPtrWillBeRawPtr<Element> one = body->querySelector("#one", ASSERT_NO_EXCEPTION);
 
     IntRect boundsInDOMTree = absoluteCaretBoundsOf(createVisiblePosition(Position(one.get(), 0)));
-    IntRect boundsInComposedTree = absoluteCaretBoundsOf(createVisiblePosition(PositionInComposedTree(one.get(), 0)));
+    IntRect boundsInFlatTree = absoluteCaretBoundsOf(createVisiblePosition(PositionInFlatTree(one.get(), 0)));
 
     EXPECT_FALSE(boundsInDOMTree.isEmpty());
-    EXPECT_EQ(boundsInDOMTree, boundsInComposedTree);
+    EXPECT_EQ(boundsInDOMTree, boundsInFlatTree);
 }
 
 TEST_F(VisibleUnitsTest, associatedLayoutObjectOfFirstLetterPunctuations)
@@ -159,10 +159,10 @@
     RefPtrWillBeRawPtr<Element> two = document().getElementById("two");
 
     EXPECT_EQ('2', characterAfter(createVisiblePositionInDOMTree(*one->firstChild(), 1)));
-    EXPECT_EQ('5', characterAfter(createVisiblePositionInComposedTree(*one->firstChild(), 1)));
+    EXPECT_EQ('5', characterAfter(createVisiblePositionInFlatTree(*one->firstChild(), 1)));
 
     EXPECT_EQ(0, characterAfter(createVisiblePositionInDOMTree(*two->firstChild(), 2)));
-    EXPECT_EQ('1', characterAfter(createVisiblePositionInComposedTree(*two->firstChild(), 2)));
+    EXPECT_EQ('1', characterAfter(createVisiblePositionInFlatTree(*two->firstChild(), 2)));
 }
 
 TEST_F(VisibleUnitsTest, canonicalPositionOfWithHTMLHtmlElement)
@@ -211,16 +211,16 @@
     Node* five = shadowRoot->getElementById("five")->firstChild();
 
     EXPECT_EQ(0, characterBefore(createVisiblePositionInDOMTree(*one, 0)));
-    EXPECT_EQ('2', characterBefore(createVisiblePositionInComposedTree(*one, 0)));
+    EXPECT_EQ('2', characterBefore(createVisiblePositionInFlatTree(*one, 0)));
 
     EXPECT_EQ('1', characterBefore(createVisiblePositionInDOMTree(*one, 1)));
-    EXPECT_EQ('1', characterBefore(createVisiblePositionInComposedTree(*one, 1)));
+    EXPECT_EQ('1', characterBefore(createVisiblePositionInFlatTree(*one, 1)));
 
     EXPECT_EQ('1', characterBefore(createVisiblePositionInDOMTree(*two, 0)));
-    EXPECT_EQ('4', characterBefore(createVisiblePositionInComposedTree(*two, 0)));
+    EXPECT_EQ('4', characterBefore(createVisiblePositionInFlatTree(*two, 0)));
 
     EXPECT_EQ('4', characterBefore(createVisiblePositionInDOMTree(*five, 0)));
-    EXPECT_EQ('1', characterBefore(createVisiblePositionInComposedTree(*five, 0)));
+    EXPECT_EQ('1', characterBefore(createVisiblePositionInFlatTree(*five, 0)));
 }
 
 TEST_F(VisibleUnitsTest, computeInlineBoxPosition)
@@ -237,21 +237,21 @@
     Node* four = shadowRoot->getElementById("four")->firstChild();
     Node* five = shadowRoot->getElementById("five")->firstChild();
 
-    EXPECT_EQ(computeInlineBoxPosition(PositionInComposedTree(one, 0), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInComposedTree(*one, 0)));
-    EXPECT_EQ(computeInlineBoxPosition(PositionInComposedTree(one, 1), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInComposedTree(*one, 1)));
+    EXPECT_EQ(computeInlineBoxPosition(PositionInFlatTree(one, 0), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInFlatTree(*one, 0)));
+    EXPECT_EQ(computeInlineBoxPosition(PositionInFlatTree(one, 1), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInFlatTree(*one, 1)));
 
-    EXPECT_EQ(computeInlineBoxPosition(PositionInComposedTree(two, 0), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInComposedTree(*two, 0)));
-    EXPECT_EQ(computeInlineBoxPosition(PositionInComposedTree(two, 1), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInComposedTree(*two, 1)));
-    EXPECT_EQ(computeInlineBoxPosition(PositionInComposedTree(two, 2), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInComposedTree(*two, 2)));
+    EXPECT_EQ(computeInlineBoxPosition(PositionInFlatTree(two, 0), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInFlatTree(*two, 0)));
+    EXPECT_EQ(computeInlineBoxPosition(PositionInFlatTree(two, 1), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInFlatTree(*two, 1)));
+    EXPECT_EQ(computeInlineBoxPosition(PositionInFlatTree(two, 2), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInFlatTree(*two, 2)));
 
-    EXPECT_EQ(computeInlineBoxPosition(PositionInComposedTree(three, 0), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInComposedTree(*three, 0)));
-    EXPECT_EQ(computeInlineBoxPosition(PositionInComposedTree(three, 1), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInComposedTree(*three, 1)));
+    EXPECT_EQ(computeInlineBoxPosition(PositionInFlatTree(three, 0), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInFlatTree(*three, 0)));
+    EXPECT_EQ(computeInlineBoxPosition(PositionInFlatTree(three, 1), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInFlatTree(*three, 1)));
 
-    EXPECT_EQ(computeInlineBoxPosition(PositionInComposedTree(four, 0), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInComposedTree(*four, 0)));
-    EXPECT_EQ(computeInlineBoxPosition(PositionInComposedTree(four, 1), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInComposedTree(*four, 1)));
+    EXPECT_EQ(computeInlineBoxPosition(PositionInFlatTree(four, 0), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInFlatTree(*four, 0)));
+    EXPECT_EQ(computeInlineBoxPosition(PositionInFlatTree(four, 1), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInFlatTree(*four, 1)));
 
-    EXPECT_EQ(computeInlineBoxPosition(PositionInComposedTree(five, 0), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInComposedTree(*five, 0)));
-    EXPECT_EQ(computeInlineBoxPosition(PositionInComposedTree(five, 1), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInComposedTree(*five, 1)));
+    EXPECT_EQ(computeInlineBoxPosition(PositionInFlatTree(five, 0), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInFlatTree(*five, 0)));
+    EXPECT_EQ(computeInlineBoxPosition(PositionInFlatTree(five, 1), TextAffinity::Downstream), computeInlineBoxPosition(createVisiblePositionInFlatTree(*five, 1)));
 }
 
 TEST_F(VisibleUnitsTest, endOfDocument)
@@ -266,10 +266,10 @@
     Element* two = document().getElementById("two");
 
     EXPECT_EQ(Position(two->firstChild(), 2), endOfDocument(createVisiblePositionInDOMTree(*one->firstChild(), 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(one->firstChild(), 1), endOfDocument(createVisiblePositionInComposedTree(*one->firstChild(), 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(one->firstChild(), 1), endOfDocument(createVisiblePositionInFlatTree(*one->firstChild(), 0)).deepEquivalent());
 
     EXPECT_EQ(Position(two->firstChild(), 2), endOfDocument(createVisiblePositionInDOMTree(*two->firstChild(), 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(one->firstChild(), 1), endOfDocument(createVisiblePositionInComposedTree(*two->firstChild(), 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(one->firstChild(), 1), endOfDocument(createVisiblePositionInFlatTree(*two->firstChild(), 1)).deepEquivalent());
 }
 
 TEST_F(VisibleUnitsTest, endOfLine)
@@ -289,33 +289,33 @@
     Node* seven = shadowRoot->getElementById("seven")->firstChild();
 
     EXPECT_EQ(Position(seven, 7), endOfLine(createVisiblePositionInDOMTree(*one, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(seven, 7), endOfLine(createVisiblePositionInComposedTree(*one, 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(seven, 7), endOfLine(createVisiblePositionInFlatTree(*one, 0)).deepEquivalent());
 
     EXPECT_EQ(Position(seven, 7), endOfLine(createVisiblePositionInDOMTree(*one, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(seven, 7), endOfLine(createVisiblePositionInComposedTree(*one, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(seven, 7), endOfLine(createVisiblePositionInFlatTree(*one, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(seven, 7), endOfLine(createVisiblePositionInDOMTree(*two, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(two, 2), endOfLine(createVisiblePositionInComposedTree(*two, 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(two, 2), endOfLine(createVisiblePositionInFlatTree(*two, 0)).deepEquivalent());
 
     // TODO(yosin) endOfLine(two, 1) -> (five, 5) is a broken result. We keep
     // it as a marker for future change.
     EXPECT_EQ(Position(five, 5), endOfLine(createVisiblePositionInDOMTree(*two, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(two, 2), endOfLine(createVisiblePositionInComposedTree(*two, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(two, 2), endOfLine(createVisiblePositionInFlatTree(*two, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(five, 5), endOfLine(createVisiblePositionInDOMTree(*three, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(four, 4), endOfLine(createVisiblePositionInComposedTree(*three, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(four, 4), endOfLine(createVisiblePositionInFlatTree(*three, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(four, 4), endOfLine(createVisiblePositionInDOMTree(*four, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(four, 4), endOfLine(createVisiblePositionInComposedTree(*four, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(four, 4), endOfLine(createVisiblePositionInFlatTree(*four, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(five, 5), endOfLine(createVisiblePositionInDOMTree(*five, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(two, 2), endOfLine(createVisiblePositionInComposedTree(*five, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(two, 2), endOfLine(createVisiblePositionInFlatTree(*five, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(six, 6), endOfLine(createVisiblePositionInDOMTree(*six, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(six, 6), endOfLine(createVisiblePositionInComposedTree(*six, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(six, 6), endOfLine(createVisiblePositionInFlatTree(*six, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(seven, 7), endOfLine(createVisiblePositionInDOMTree(*seven, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(seven, 7), endOfLine(createVisiblePositionInComposedTree(*seven, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(seven, 7), endOfLine(createVisiblePositionInFlatTree(*seven, 1)).deepEquivalent());
 }
 
 TEST_F(VisibleUnitsTest, endOfParagraphFirstLetter)
@@ -365,10 +365,10 @@
     Element* three = document().getElementById("three");
 
     EXPECT_EQ(Position(three->firstChild(), 3), endOfParagraph(createVisiblePositionInDOMTree(*one->firstChild(), 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(one->firstChild(), 1), endOfParagraph(createVisiblePositionInComposedTree(*one->firstChild(), 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(one->firstChild(), 1), endOfParagraph(createVisiblePositionInFlatTree(*one->firstChild(), 1)).deepEquivalent());
 
     EXPECT_EQ(Position(three->firstChild(), 3), endOfParagraph(createVisiblePositionInDOMTree(*two->firstChild(), 2)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(two->firstChild(), 2), endOfParagraph(createVisiblePositionInComposedTree(*two->firstChild(), 2)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(two->firstChild(), 2), endOfParagraph(createVisiblePositionInFlatTree(*two->firstChild(), 2)).deepEquivalent());
 }
 
 TEST_F(VisibleUnitsTest, endOfParagraphSimple)
@@ -420,22 +420,22 @@
     Node* four = shadowRoot->getElementById("four")->firstChild();
 
     EXPECT_EQ(Position(two, 2), endOfSentence(createVisiblePositionInDOMTree(*one, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(four, 4), endOfSentence(createVisiblePositionInComposedTree(*one, 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(four, 4), endOfSentence(createVisiblePositionInFlatTree(*one, 0)).deepEquivalent());
 
     EXPECT_EQ(Position(two, 2), endOfSentence(createVisiblePositionInDOMTree(*one, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(four, 4), endOfSentence(createVisiblePositionInComposedTree(*one, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(four, 4), endOfSentence(createVisiblePositionInFlatTree(*one, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(two, 2), endOfSentence(createVisiblePositionInDOMTree(*two, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(four, 4), endOfSentence(createVisiblePositionInComposedTree(*two, 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(four, 4), endOfSentence(createVisiblePositionInFlatTree(*two, 0)).deepEquivalent());
 
     EXPECT_EQ(Position(two, 2), endOfSentence(createVisiblePositionInDOMTree(*two, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(four, 4), endOfSentence(createVisiblePositionInComposedTree(*two, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(four, 4), endOfSentence(createVisiblePositionInFlatTree(*two, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(four, 4), endOfSentence(createVisiblePositionInDOMTree(*three, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(four, 4), endOfSentence(createVisiblePositionInComposedTree(*three, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(four, 4), endOfSentence(createVisiblePositionInFlatTree(*three, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(four, 4), endOfSentence(createVisiblePositionInDOMTree(*four, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(four, 4), endOfSentence(createVisiblePositionInComposedTree(*four, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(four, 4), endOfSentence(createVisiblePositionInFlatTree(*four, 1)).deepEquivalent());
 }
 
 TEST_F(VisibleUnitsTest, endOfWord)
@@ -453,25 +453,25 @@
     Node* five = shadowRoot->getElementById("five")->firstChild();
 
     EXPECT_EQ(Position(three, 3), endOfWord(createVisiblePositionInDOMTree(*one, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(five, 5), endOfWord(createVisiblePositionInComposedTree(*one, 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(five, 5), endOfWord(createVisiblePositionInFlatTree(*one, 0)).deepEquivalent());
 
     EXPECT_EQ(Position(three, 3), endOfWord(createVisiblePositionInDOMTree(*one, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(five, 5), endOfWord(createVisiblePositionInComposedTree(*one, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(five, 5), endOfWord(createVisiblePositionInFlatTree(*one, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(three, 3), endOfWord(createVisiblePositionInDOMTree(*two, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(two, 2), endOfWord(createVisiblePositionInComposedTree(*two, 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(two, 2), endOfWord(createVisiblePositionInFlatTree(*two, 0)).deepEquivalent());
 
     EXPECT_EQ(Position(three, 3), endOfWord(createVisiblePositionInDOMTree(*two, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(two, 2), endOfWord(createVisiblePositionInComposedTree(*two, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(two, 2), endOfWord(createVisiblePositionInFlatTree(*two, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(three, 3), endOfWord(createVisiblePositionInDOMTree(*three, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(three, 3), endOfWord(createVisiblePositionInComposedTree(*three, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(three, 3), endOfWord(createVisiblePositionInFlatTree(*three, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(four, 5), endOfWord(createVisiblePositionInDOMTree(*four, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(two, 2), endOfWord(createVisiblePositionInComposedTree(*four, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(two, 2), endOfWord(createVisiblePositionInFlatTree(*four, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(five, 5), endOfWord(createVisiblePositionInDOMTree(*five, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(five, 5), endOfWord(createVisiblePositionInComposedTree(*five, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(five, 5), endOfWord(createVisiblePositionInFlatTree(*five, 1)).deepEquivalent());
 }
 
 TEST_F(VisibleUnitsTest, isEndOfEditableOrNonEditableContent)
@@ -486,10 +486,10 @@
     Element* two = document().getElementById("two");
 
     EXPECT_FALSE(isEndOfEditableOrNonEditableContent(createVisiblePositionInDOMTree(*one->firstChild(), 1)));
-    EXPECT_TRUE(isEndOfEditableOrNonEditableContent(createVisiblePositionInComposedTree(*one->firstChild(), 1)));
+    EXPECT_TRUE(isEndOfEditableOrNonEditableContent(createVisiblePositionInFlatTree(*one->firstChild(), 1)));
 
     EXPECT_TRUE(isEndOfEditableOrNonEditableContent(createVisiblePositionInDOMTree(*two->firstChild(), 2)));
-    EXPECT_FALSE(isEndOfEditableOrNonEditableContent(createVisiblePositionInComposedTree(*two->firstChild(), 2)));
+    EXPECT_FALSE(isEndOfEditableOrNonEditableContent(createVisiblePositionInFlatTree(*two->firstChild(), 2)));
 }
 
 TEST_F(VisibleUnitsTest, isEndOfEditableOrNonEditableContentWithInput)
@@ -501,13 +501,13 @@
     Node* text = toHTMLTextFormControlElement(document().getElementById("sample"))->innerEditorElement()->firstChild();
 
     EXPECT_FALSE(isEndOfEditableOrNonEditableContent(createVisiblePositionInDOMTree(*text, 0)));
-    EXPECT_FALSE(isEndOfEditableOrNonEditableContent(createVisiblePositionInComposedTree(*text, 0)));
+    EXPECT_FALSE(isEndOfEditableOrNonEditableContent(createVisiblePositionInFlatTree(*text, 0)));
 
     EXPECT_FALSE(isEndOfEditableOrNonEditableContent(createVisiblePositionInDOMTree(*text, 1)));
-    EXPECT_FALSE(isEndOfEditableOrNonEditableContent(createVisiblePositionInComposedTree(*text, 1)));
+    EXPECT_FALSE(isEndOfEditableOrNonEditableContent(createVisiblePositionInFlatTree(*text, 1)));
 
     EXPECT_TRUE(isEndOfEditableOrNonEditableContent(createVisiblePositionInDOMTree(*text, 2)));
-    EXPECT_TRUE(isEndOfEditableOrNonEditableContent(createVisiblePositionInComposedTree(*text, 2)));
+    EXPECT_TRUE(isEndOfEditableOrNonEditableContent(createVisiblePositionInFlatTree(*text, 2)));
 }
 
 TEST_F(VisibleUnitsTest, isEndOfLine)
@@ -527,28 +527,28 @@
     Node* seven = shadowRoot->getElementById("seven")->firstChild();
 
     EXPECT_FALSE(isEndOfLine(createVisiblePositionInDOMTree(*one, 0)));
-    EXPECT_FALSE(isEndOfLine(createVisiblePositionInComposedTree(*one, 0)));
+    EXPECT_FALSE(isEndOfLine(createVisiblePositionInFlatTree(*one, 0)));
 
     EXPECT_FALSE(isEndOfLine(createVisiblePositionInDOMTree(*one, 1)));
-    EXPECT_FALSE(isEndOfLine(createVisiblePositionInComposedTree(*one, 1)));
+    EXPECT_FALSE(isEndOfLine(createVisiblePositionInFlatTree(*one, 1)));
 
     EXPECT_FALSE(isEndOfLine(createVisiblePositionInDOMTree(*two, 2)));
-    EXPECT_TRUE(isEndOfLine(createVisiblePositionInComposedTree(*two, 2)));
+    EXPECT_TRUE(isEndOfLine(createVisiblePositionInFlatTree(*two, 2)));
 
     EXPECT_FALSE(isEndOfLine(createVisiblePositionInDOMTree(*three, 3)));
-    EXPECT_FALSE(isEndOfLine(createVisiblePositionInComposedTree(*three, 3)));
+    EXPECT_FALSE(isEndOfLine(createVisiblePositionInFlatTree(*three, 3)));
 
     EXPECT_TRUE(isEndOfLine(createVisiblePositionInDOMTree(*four, 4)));
-    EXPECT_TRUE(isEndOfLine(createVisiblePositionInComposedTree(*four, 4)));
+    EXPECT_TRUE(isEndOfLine(createVisiblePositionInFlatTree(*four, 4)));
 
     EXPECT_TRUE(isEndOfLine(createVisiblePositionInDOMTree(*five, 5)));
-    EXPECT_FALSE(isEndOfLine(createVisiblePositionInComposedTree(*five, 5)));
+    EXPECT_FALSE(isEndOfLine(createVisiblePositionInFlatTree(*five, 5)));
 
     EXPECT_TRUE(isEndOfLine(createVisiblePositionInDOMTree(*six, 6)));
-    EXPECT_TRUE(isEndOfLine(createVisiblePositionInComposedTree(*six, 6)));
+    EXPECT_TRUE(isEndOfLine(createVisiblePositionInFlatTree(*six, 6)));
 
     EXPECT_TRUE(isEndOfLine(createVisiblePositionInDOMTree(*seven, 7)));
-    EXPECT_TRUE(isEndOfLine(createVisiblePositionInComposedTree(*seven, 7)));
+    EXPECT_TRUE(isEndOfLine(createVisiblePositionInFlatTree(*seven, 7)));
 }
 
 TEST_F(VisibleUnitsTest, isLogicalEndOfLine)
@@ -568,28 +568,28 @@
     Node* seven = shadowRoot->getElementById("seven")->firstChild();
 
     EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*one, 0)));
-    EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInComposedTree(*one, 0)));
+    EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*one, 0)));
 
     EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*one, 1)));
-    EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInComposedTree(*one, 1)));
+    EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*one, 1)));
 
     EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*two, 2)));
-    EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInComposedTree(*two, 2)));
+    EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*two, 2)));
 
     EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*three, 3)));
-    EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInComposedTree(*three, 3)));
+    EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*three, 3)));
 
     EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*four, 4)));
-    EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInComposedTree(*four, 4)));
+    EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*four, 4)));
 
     EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*five, 5)));
-    EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInComposedTree(*five, 5)));
+    EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*five, 5)));
 
     EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*six, 6)));
-    EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInComposedTree(*six, 6)));
+    EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*six, 6)));
 
     EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*seven, 7)));
-    EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInComposedTree(*seven, 7)));
+    EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*seven, 7)));
 }
 
 TEST_F(VisibleUnitsTest, inSameLine)
@@ -616,15 +616,15 @@
     EXPECT_FALSE(inSameLine(createVisiblePositionInDOMTree(*one->firstChild(), 0), createVisiblePositionInDOMTree(*five->firstChild(), 0)));
     EXPECT_FALSE(inSameLine(createVisiblePositionInDOMTree(*two->firstChild(), 0), createVisiblePositionInDOMTree(*four->firstChild(), 0)));
 
-    EXPECT_FALSE(inSameLine(positionWithAffinityInComposedTree(*one, 0), positionWithAffinityInComposedTree(*two, 0)));
-    EXPECT_FALSE(inSameLine(positionWithAffinityInComposedTree(*one->firstChild(), 0), positionWithAffinityInComposedTree(*two->firstChild(), 0)));
-    EXPECT_FALSE(inSameLine(positionWithAffinityInComposedTree(*one->firstChild(), 0), positionWithAffinityInComposedTree(*five->firstChild(), 0)));
-    EXPECT_TRUE(inSameLine(positionWithAffinityInComposedTree(*two->firstChild(), 0), positionWithAffinityInComposedTree(*four->firstChild(), 0)));
+    EXPECT_FALSE(inSameLine(positionWithAffinityInFlatTree(*one, 0), positionWithAffinityInFlatTree(*two, 0)));
+    EXPECT_FALSE(inSameLine(positionWithAffinityInFlatTree(*one->firstChild(), 0), positionWithAffinityInFlatTree(*two->firstChild(), 0)));
+    EXPECT_FALSE(inSameLine(positionWithAffinityInFlatTree(*one->firstChild(), 0), positionWithAffinityInFlatTree(*five->firstChild(), 0)));
+    EXPECT_TRUE(inSameLine(positionWithAffinityInFlatTree(*two->firstChild(), 0), positionWithAffinityInFlatTree(*four->firstChild(), 0)));
 
-    EXPECT_FALSE(inSameLine(createVisiblePositionInComposedTree(*one, 0), createVisiblePositionInComposedTree(*two, 0)));
-    EXPECT_FALSE(inSameLine(createVisiblePositionInComposedTree(*one->firstChild(), 0), createVisiblePositionInComposedTree(*two->firstChild(), 0)));
-    EXPECT_FALSE(inSameLine(createVisiblePositionInComposedTree(*one->firstChild(), 0), createVisiblePositionInComposedTree(*five->firstChild(), 0)));
-    EXPECT_TRUE(inSameLine(createVisiblePositionInComposedTree(*two->firstChild(), 0), createVisiblePositionInComposedTree(*four->firstChild(), 0)));
+    EXPECT_FALSE(inSameLine(createVisiblePositionInFlatTree(*one, 0), createVisiblePositionInFlatTree(*two, 0)));
+    EXPECT_FALSE(inSameLine(createVisiblePositionInFlatTree(*one->firstChild(), 0), createVisiblePositionInFlatTree(*two->firstChild(), 0)));
+    EXPECT_FALSE(inSameLine(createVisiblePositionInFlatTree(*one->firstChild(), 0), createVisiblePositionInFlatTree(*five->firstChild(), 0)));
+    EXPECT_TRUE(inSameLine(createVisiblePositionInFlatTree(*two->firstChild(), 0), createVisiblePositionInFlatTree(*four->firstChild(), 0)));
 }
 
 TEST_F(VisibleUnitsTest, isEndOfParagraph)
@@ -640,19 +640,19 @@
     Node* three = document().getElementById("three")->firstChild();
 
     EXPECT_FALSE(isEndOfParagraph(createVisiblePositionInDOMTree(*one, 0)));
-    EXPECT_FALSE(isEndOfParagraph(createVisiblePositionInComposedTree(*one, 0)));
+    EXPECT_FALSE(isEndOfParagraph(createVisiblePositionInFlatTree(*one, 0)));
 
     EXPECT_FALSE(isEndOfParagraph(createVisiblePositionInDOMTree(*one, 1)));
-    EXPECT_TRUE(isEndOfParagraph(createVisiblePositionInComposedTree(*one, 1)));
+    EXPECT_TRUE(isEndOfParagraph(createVisiblePositionInFlatTree(*one, 1)));
 
     EXPECT_FALSE(isEndOfParagraph(createVisiblePositionInDOMTree(*two, 2)));
-    EXPECT_TRUE(isEndOfParagraph(createVisiblePositionInComposedTree(*two, 2)));
+    EXPECT_TRUE(isEndOfParagraph(createVisiblePositionInFlatTree(*two, 2)));
 
     EXPECT_FALSE(isEndOfParagraph(createVisiblePositionInDOMTree(*three, 0)));
-    EXPECT_FALSE(isEndOfParagraph(createVisiblePositionInComposedTree(*three, 0)));
+    EXPECT_FALSE(isEndOfParagraph(createVisiblePositionInFlatTree(*three, 0)));
 
     EXPECT_TRUE(isEndOfParagraph(createVisiblePositionInDOMTree(*three, 3)));
-    EXPECT_TRUE(isEndOfParagraph(createVisiblePositionInComposedTree(*three, 3)));
+    EXPECT_TRUE(isEndOfParagraph(createVisiblePositionInFlatTree(*three, 3)));
 }
 
 TEST_F(VisibleUnitsTest, isStartOfLine)
@@ -672,28 +672,28 @@
     Node* seven = shadowRoot->getElementById("seven")->firstChild();
 
     EXPECT_TRUE(isStartOfLine(createVisiblePositionInDOMTree(*one, 0)));
-    EXPECT_TRUE(isStartOfLine(createVisiblePositionInComposedTree(*one, 0)));
+    EXPECT_TRUE(isStartOfLine(createVisiblePositionInFlatTree(*one, 0)));
 
     EXPECT_FALSE(isStartOfLine(createVisiblePositionInDOMTree(*one, 1)));
-    EXPECT_FALSE(isStartOfLine(createVisiblePositionInComposedTree(*one, 1)));
+    EXPECT_FALSE(isStartOfLine(createVisiblePositionInFlatTree(*one, 1)));
 
     EXPECT_FALSE(isStartOfLine(createVisiblePositionInDOMTree(*two, 0)));
-    EXPECT_FALSE(isStartOfLine(createVisiblePositionInComposedTree(*two, 0)));
+    EXPECT_FALSE(isStartOfLine(createVisiblePositionInFlatTree(*two, 0)));
 
     EXPECT_FALSE(isStartOfLine(createVisiblePositionInDOMTree(*three, 0)));
-    EXPECT_TRUE(isStartOfLine(createVisiblePositionInComposedTree(*three, 0)));
+    EXPECT_TRUE(isStartOfLine(createVisiblePositionInFlatTree(*three, 0)));
 
     EXPECT_FALSE(isStartOfLine(createVisiblePositionInDOMTree(*four, 0)));
-    EXPECT_FALSE(isStartOfLine(createVisiblePositionInComposedTree(*four, 0)));
+    EXPECT_FALSE(isStartOfLine(createVisiblePositionInFlatTree(*four, 0)));
 
     EXPECT_TRUE(isStartOfLine(createVisiblePositionInDOMTree(*five, 0)));
-    EXPECT_TRUE(isStartOfLine(createVisiblePositionInComposedTree(*five, 0)));
+    EXPECT_TRUE(isStartOfLine(createVisiblePositionInFlatTree(*five, 0)));
 
     EXPECT_TRUE(isStartOfLine(createVisiblePositionInDOMTree(*six, 0)));
-    EXPECT_TRUE(isStartOfLine(createVisiblePositionInComposedTree(*six, 0)));
+    EXPECT_TRUE(isStartOfLine(createVisiblePositionInFlatTree(*six, 0)));
 
     EXPECT_FALSE(isStartOfLine(createVisiblePositionInDOMTree(*seven, 0)));
-    EXPECT_FALSE(isStartOfLine(createVisiblePositionInComposedTree(*seven, 0)));
+    EXPECT_FALSE(isStartOfLine(createVisiblePositionInFlatTree(*seven, 0)));
 }
 
 TEST_F(VisibleUnitsTest, isStartOfParagraph)
@@ -710,19 +710,19 @@
     Node* three = document().getElementById("three")->firstChild();
 
     EXPECT_TRUE(isStartOfParagraph(createVisiblePositionInDOMTree(*zero, 0)));
-    EXPECT_TRUE(isStartOfParagraph(createVisiblePositionInComposedTree(*zero, 0)));
+    EXPECT_TRUE(isStartOfParagraph(createVisiblePositionInFlatTree(*zero, 0)));
 
     EXPECT_FALSE(isStartOfParagraph(createVisiblePositionInDOMTree(*one, 0)));
-    EXPECT_TRUE(isStartOfParagraph(createVisiblePositionInComposedTree(*one, 0)));
+    EXPECT_TRUE(isStartOfParagraph(createVisiblePositionInFlatTree(*one, 0)));
 
     EXPECT_FALSE(isStartOfParagraph(createVisiblePositionInDOMTree(*one, 1)));
-    EXPECT_FALSE(isStartOfParagraph(createVisiblePositionInComposedTree(*one, 1)));
+    EXPECT_FALSE(isStartOfParagraph(createVisiblePositionInFlatTree(*one, 1)));
 
     EXPECT_FALSE(isStartOfParagraph(createVisiblePositionInDOMTree(*two, 0)));
-    EXPECT_TRUE(isStartOfParagraph(createVisiblePositionInComposedTree(*two, 0)));
+    EXPECT_TRUE(isStartOfParagraph(createVisiblePositionInFlatTree(*two, 0)));
 
     EXPECT_FALSE(isStartOfParagraph(createVisiblePositionInDOMTree(*three, 0)));
-    EXPECT_TRUE(isStartOfParagraph(createVisiblePositionInComposedTree(*three, 0)));
+    EXPECT_TRUE(isStartOfParagraph(createVisiblePositionInFlatTree(*three, 0)));
 }
 
 TEST_F(VisibleUnitsTest, isVisuallyEquivalentCandidateWithHTMLHtmlElement)
@@ -780,13 +780,13 @@
     Element* five = shadowRoot->getElementById("five");
 
     EXPECT_EQ(Position(two->firstChild(), 1), leftPositionOf(createVisiblePosition(Position(one, 0))).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(two->firstChild(), 1), leftPositionOf(createVisiblePosition(PositionInComposedTree(one, 0))).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(two->firstChild(), 1), leftPositionOf(createVisiblePosition(PositionInFlatTree(one, 0))).deepEquivalent());
 
     EXPECT_EQ(Position(one->firstChild(), 0), leftPositionOf(createVisiblePosition(Position(two, 0))).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(four->firstChild(), 3), leftPositionOf(createVisiblePosition(PositionInComposedTree(two, 0))).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(four->firstChild(), 3), leftPositionOf(createVisiblePosition(PositionInFlatTree(two, 0))).deepEquivalent());
 
     EXPECT_EQ(Position(two->firstChild(), 2), leftPositionOf(createVisiblePosition(Position(three, 0))).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(five->firstChild(), 5), leftPositionOf(createVisiblePosition(PositionInComposedTree(three, 0))).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(five->firstChild(), 5), leftPositionOf(createVisiblePosition(PositionInFlatTree(three, 0))).deepEquivalent());
 }
 
 TEST_F(VisibleUnitsTest, localCaretRectOfPosition)
@@ -802,13 +802,13 @@
     LayoutObject* layoutObjectFromDOMTree;
     LayoutRect layoutRectFromDOMTree = localCaretRectOfPosition(Position(one->firstChild(), 0), layoutObjectFromDOMTree);
 
-    LayoutObject* layoutObjectFromComposedTree;
-    LayoutRect layoutRectFromComposedTree = localCaretRectOfPosition(PositionInComposedTree(one->firstChild(), 0), layoutObjectFromComposedTree);
+    LayoutObject* layoutObjectFromFlatTree;
+    LayoutRect layoutRectFromFlatTree = localCaretRectOfPosition(PositionInFlatTree(one->firstChild(), 0), layoutObjectFromFlatTree);
 
     EXPECT_TRUE(layoutObjectFromDOMTree);
     EXPECT_FALSE(layoutRectFromDOMTree.isEmpty());
-    EXPECT_EQ(layoutObjectFromDOMTree, layoutObjectFromComposedTree);
-    EXPECT_EQ(layoutRectFromDOMTree, layoutRectFromComposedTree);
+    EXPECT_EQ(layoutObjectFromDOMTree, layoutObjectFromFlatTree);
+    EXPECT_EQ(layoutRectFromDOMTree, layoutRectFromFlatTree);
 }
 
 TEST_F(VisibleUnitsTest, logicalEndOfLine)
@@ -828,33 +828,33 @@
     Node* seven = shadowRoot->getElementById("seven")->firstChild();
 
     EXPECT_EQ(Position(seven, 7), logicalEndOfLine(createVisiblePositionInDOMTree(*one, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(seven, 7), logicalEndOfLine(createVisiblePositionInComposedTree(*one, 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(seven, 7), logicalEndOfLine(createVisiblePositionInFlatTree(*one, 0)).deepEquivalent());
 
     EXPECT_EQ(Position(seven, 7), logicalEndOfLine(createVisiblePositionInDOMTree(*one, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(seven, 7), logicalEndOfLine(createVisiblePositionInComposedTree(*one, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(seven, 7), logicalEndOfLine(createVisiblePositionInFlatTree(*one, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(seven, 7), logicalEndOfLine(createVisiblePositionInDOMTree(*two, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(two, 2), logicalEndOfLine(createVisiblePositionInComposedTree(*two, 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(two, 2), logicalEndOfLine(createVisiblePositionInFlatTree(*two, 0)).deepEquivalent());
 
     // TODO(yosin) logicalEndOfLine(two, 1) -> (five, 5) is a broken result. We keep
     // it as a marker for future change.
     EXPECT_EQ(Position(five, 5), logicalEndOfLine(createVisiblePositionInDOMTree(*two, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(two, 2), logicalEndOfLine(createVisiblePositionInComposedTree(*two, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(two, 2), logicalEndOfLine(createVisiblePositionInFlatTree(*two, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(five, 5), logicalEndOfLine(createVisiblePositionInDOMTree(*three, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(four, 4), logicalEndOfLine(createVisiblePositionInComposedTree(*three, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(four, 4), logicalEndOfLine(createVisiblePositionInFlatTree(*three, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(four, 4), logicalEndOfLine(createVisiblePositionInDOMTree(*four, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(four, 4), logicalEndOfLine(createVisiblePositionInComposedTree(*four, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(four, 4), logicalEndOfLine(createVisiblePositionInFlatTree(*four, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(five, 5), logicalEndOfLine(createVisiblePositionInDOMTree(*five, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(two, 2), logicalEndOfLine(createVisiblePositionInComposedTree(*five, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(two, 2), logicalEndOfLine(createVisiblePositionInFlatTree(*five, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(six, 6), logicalEndOfLine(createVisiblePositionInDOMTree(*six, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(six, 6), logicalEndOfLine(createVisiblePositionInComposedTree(*six, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(six, 6), logicalEndOfLine(createVisiblePositionInFlatTree(*six, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(seven, 7), logicalEndOfLine(createVisiblePositionInDOMTree(*seven, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(seven, 7), logicalEndOfLine(createVisiblePositionInComposedTree(*seven, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(seven, 7), logicalEndOfLine(createVisiblePositionInFlatTree(*seven, 1)).deepEquivalent());
 }
 
 TEST_F(VisibleUnitsTest, logicalStartOfLine)
@@ -874,33 +874,33 @@
     Node* seven = shadowRoot->getElementById("seven")->firstChild();
 
     EXPECT_EQ(Position(one, 0), logicalStartOfLine(createVisiblePositionInDOMTree(*one, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(one, 0), logicalStartOfLine(createVisiblePositionInComposedTree(*one, 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(one, 0), logicalStartOfLine(createVisiblePositionInFlatTree(*one, 0)).deepEquivalent());
 
     EXPECT_EQ(Position(one, 0), logicalStartOfLine(createVisiblePositionInDOMTree(*one, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(one, 0), logicalStartOfLine(createVisiblePositionInComposedTree(*one, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(one, 0), logicalStartOfLine(createVisiblePositionInFlatTree(*one, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(one, 0), logicalStartOfLine(createVisiblePositionInDOMTree(*two, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(five, 0), logicalStartOfLine(createVisiblePositionInComposedTree(*two, 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(five, 0), logicalStartOfLine(createVisiblePositionInFlatTree(*two, 0)).deepEquivalent());
 
     EXPECT_EQ(Position(five, 0), logicalStartOfLine(createVisiblePositionInDOMTree(*two, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(five, 0), logicalStartOfLine(createVisiblePositionInComposedTree(*two, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(five, 0), logicalStartOfLine(createVisiblePositionInFlatTree(*two, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(five, 0), logicalStartOfLine(createVisiblePositionInDOMTree(*three, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(three, 0), logicalStartOfLine(createVisiblePositionInComposedTree(*three, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(three, 0), logicalStartOfLine(createVisiblePositionInFlatTree(*three, 1)).deepEquivalent());
 
     // TODO(yosin) logicalStartOfLine(four, 1) -> (two, 2) is a broken result.
     // We keep it as a marker for future change.
     EXPECT_EQ(Position(two, 2), logicalStartOfLine(createVisiblePositionInDOMTree(*four, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(three, 0), logicalStartOfLine(createVisiblePositionInComposedTree(*four, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(three, 0), logicalStartOfLine(createVisiblePositionInFlatTree(*four, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(five, 0), logicalStartOfLine(createVisiblePositionInDOMTree(*five, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(five, 0), logicalStartOfLine(createVisiblePositionInComposedTree(*five, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(five, 0), logicalStartOfLine(createVisiblePositionInFlatTree(*five, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(six, 0), logicalStartOfLine(createVisiblePositionInDOMTree(*six, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(six, 0), logicalStartOfLine(createVisiblePositionInComposedTree(*six, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(six, 0), logicalStartOfLine(createVisiblePositionInFlatTree(*six, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(one, 0), logicalStartOfLine(createVisiblePositionInDOMTree(*seven, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(one, 0), logicalStartOfLine(createVisiblePositionInComposedTree(*seven, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(one, 0), logicalStartOfLine(createVisiblePositionInFlatTree(*seven, 1)).deepEquivalent());
 }
 
 TEST_F(VisibleUnitsTest, mostBackwardCaretPositionAfterAnchor)
@@ -914,7 +914,7 @@
     RefPtrWillBeRawPtr<Element> host = document().getElementById("host");
 
     EXPECT_EQ(Position::lastPositionInNode(host.get()), mostForwardCaretPosition(Position::afterNode(host.get())));
-    EXPECT_EQ(PositionInComposedTree::lastPositionInNode(host.get()), mostForwardCaretPosition(PositionInComposedTree::afterNode(host.get())));
+    EXPECT_EQ(PositionInFlatTree::lastPositionInNode(host.get()), mostForwardCaretPosition(PositionInFlatTree::afterNode(host.get())));
 }
 
 TEST_F(VisibleUnitsTest, mostBackwardCaretPositionFirstLetter)
@@ -973,7 +973,7 @@
     RefPtrWillBeRawPtr<Element> three = shadowRoot->getElementById("three");
 
     EXPECT_EQ(Position(one->firstChild(), 1), mostBackwardCaretPosition(Position::afterNode(host.get())));
-    EXPECT_EQ(PositionInComposedTree(three->firstChild(), 3), mostBackwardCaretPosition(PositionInComposedTree::afterNode(host.get())));
+    EXPECT_EQ(PositionInFlatTree(three->firstChild(), 3), mostBackwardCaretPosition(PositionInFlatTree::afterNode(host.get())));
 }
 
 TEST_F(VisibleUnitsTest, mostForwardCaretPositionFirstLetter)
@@ -1014,16 +1014,16 @@
     Element* five = shadowRoot->getElementById("five");
 
     EXPECT_EQ(Position(one->firstChild(), 0), nextPositionOf(createVisiblePosition(Position(zero, 1))).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(four->firstChild(), 0), nextPositionOf(createVisiblePosition(PositionInComposedTree(zero, 1))).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(four->firstChild(), 0), nextPositionOf(createVisiblePosition(PositionInFlatTree(zero, 1))).deepEquivalent());
 
     EXPECT_EQ(Position(one->firstChild(), 1), nextPositionOf(createVisiblePosition(Position(one, 0))).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(one->firstChild(), 1), nextPositionOf(createVisiblePosition(PositionInComposedTree(one, 0))).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(one->firstChild(), 1), nextPositionOf(createVisiblePosition(PositionInFlatTree(one, 0))).deepEquivalent());
 
     EXPECT_EQ(Position(two->firstChild(), 1), nextPositionOf(createVisiblePosition(Position(one, 1))).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(five->firstChild(), 1), nextPositionOf(createVisiblePosition(PositionInComposedTree(one, 1))).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(five->firstChild(), 1), nextPositionOf(createVisiblePosition(PositionInFlatTree(one, 1))).deepEquivalent());
 
     EXPECT_EQ(Position(three->firstChild(), 0), nextPositionOf(createVisiblePosition(Position(two, 2))).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(one->firstChild(), 1), nextPositionOf(createVisiblePosition(PositionInComposedTree(two, 2))).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(one->firstChild(), 1), nextPositionOf(createVisiblePosition(PositionInFlatTree(two, 2))).deepEquivalent());
 }
 
 TEST_F(VisibleUnitsTest, previousPositionOf)
@@ -1042,29 +1042,29 @@
     Node* five = shadowRoot->getElementById("five")->firstChild();
 
     EXPECT_EQ(Position(zero, 0), previousPositionOf(createVisiblePosition(Position(zero, 1))).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(zero, 0), previousPositionOf(createVisiblePosition(PositionInComposedTree(zero, 1))).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(zero, 0), previousPositionOf(createVisiblePosition(PositionInFlatTree(zero, 1))).deepEquivalent());
 
     EXPECT_EQ(Position(zero, 1), previousPositionOf(createVisiblePosition(Position(one, 0))).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(two, 1), previousPositionOf(createVisiblePosition(PositionInComposedTree(one, 0))).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(two, 1), previousPositionOf(createVisiblePosition(PositionInFlatTree(one, 0))).deepEquivalent());
 
     EXPECT_EQ(Position(one, 0), previousPositionOf(createVisiblePosition(Position(one, 1))).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(two, 2), previousPositionOf(createVisiblePosition(PositionInComposedTree(one, 1))).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(two, 2), previousPositionOf(createVisiblePosition(PositionInFlatTree(one, 1))).deepEquivalent());
 
     EXPECT_EQ(Position(one, 0), previousPositionOf(createVisiblePosition(Position(two, 0))).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(four, 3), previousPositionOf(createVisiblePosition(PositionInComposedTree(two, 0))).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(four, 3), previousPositionOf(createVisiblePosition(PositionInFlatTree(two, 0))).deepEquivalent());
 
     // DOM tree to shadow tree
     EXPECT_EQ(Position(two, 2), previousPositionOf(createVisiblePosition(Position(three, 0))).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(five, 5), previousPositionOf(createVisiblePosition(PositionInComposedTree(three, 0))).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(five, 5), previousPositionOf(createVisiblePosition(PositionInFlatTree(three, 0))).deepEquivalent());
 
     // Shadow tree to DOM tree
     EXPECT_EQ(Position(), previousPositionOf(createVisiblePosition(Position(four, 0))).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(zero, 1), previousPositionOf(createVisiblePosition(PositionInComposedTree(four, 0))).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(zero, 1), previousPositionOf(createVisiblePosition(PositionInFlatTree(four, 0))).deepEquivalent());
 
     // Note: Canonicalization maps (five, 0) to (four, 4) in DOM tree and
-    // (one, 1) in composed tree.
+    // (one, 1) in flat tree.
     EXPECT_EQ(Position(four, 4), previousPositionOf(createVisiblePosition(Position(five, 1))).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(one, 1), previousPositionOf(createVisiblePosition(PositionInComposedTree(five, 1))).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(one, 1), previousPositionOf(createVisiblePosition(PositionInFlatTree(five, 1))).deepEquivalent());
 }
 
 TEST_F(VisibleUnitsTest, previousPositionOfOneCharPerLine)
@@ -1121,16 +1121,16 @@
     Node* five = shadowRoot->getElementById("five")->firstChild();
 
     EXPECT_EQ(Position(), rightPositionOf(createVisiblePosition(Position(one, 1))).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(five, 0), rightPositionOf(createVisiblePosition(PositionInComposedTree(one, 1))).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(five, 0), rightPositionOf(createVisiblePosition(PositionInFlatTree(one, 1))).deepEquivalent());
 
     EXPECT_EQ(Position(one, 1), rightPositionOf(createVisiblePosition(Position(two, 2))).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(one, 1), rightPositionOf(createVisiblePosition(PositionInComposedTree(two, 2))).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(one, 1), rightPositionOf(createVisiblePosition(PositionInFlatTree(two, 2))).deepEquivalent());
 
     EXPECT_EQ(Position(five, 0), rightPositionOf(createVisiblePosition(Position(four, 4))).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(two, 0), rightPositionOf(createVisiblePosition(PositionInComposedTree(four, 4))).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(two, 0), rightPositionOf(createVisiblePosition(PositionInFlatTree(four, 4))).deepEquivalent());
 
     EXPECT_EQ(Position(), rightPositionOf(createVisiblePosition(Position(five, 5))).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(three, 0), rightPositionOf(createVisiblePosition(PositionInComposedTree(five, 5))).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(three, 0), rightPositionOf(createVisiblePosition(PositionInFlatTree(five, 5))).deepEquivalent());
 }
 
 TEST_F(VisibleUnitsTest, startOfDocument)
@@ -1145,10 +1145,10 @@
     Node* two = document().getElementById("two")->firstChild();
 
     EXPECT_EQ(Position(one, 0), startOfDocument(createVisiblePositionInDOMTree(*one, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(two, 0), startOfDocument(createVisiblePositionInComposedTree(*one, 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(two, 0), startOfDocument(createVisiblePositionInFlatTree(*one, 0)).deepEquivalent());
 
     EXPECT_EQ(Position(one, 0), startOfDocument(createVisiblePositionInDOMTree(*two, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(two, 0), startOfDocument(createVisiblePositionInComposedTree(*two, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(two, 0), startOfDocument(createVisiblePositionInFlatTree(*two, 1)).deepEquivalent());
 }
 
 TEST_F(VisibleUnitsTest, startOfLine)
@@ -1168,33 +1168,33 @@
     Node* seven = shadowRoot->getElementById("seven")->firstChild();
 
     EXPECT_EQ(Position(one, 0), startOfLine(createVisiblePositionInDOMTree(*one, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(one, 0), startOfLine(createVisiblePositionInComposedTree(*one, 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(one, 0), startOfLine(createVisiblePositionInFlatTree(*one, 0)).deepEquivalent());
 
     EXPECT_EQ(Position(one, 0), startOfLine(createVisiblePositionInDOMTree(*one, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(one, 0), startOfLine(createVisiblePositionInComposedTree(*one, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(one, 0), startOfLine(createVisiblePositionInFlatTree(*one, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(one, 0), startOfLine(createVisiblePositionInDOMTree(*two, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(five, 0), startOfLine(createVisiblePositionInComposedTree(*two, 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(five, 0), startOfLine(createVisiblePositionInFlatTree(*two, 0)).deepEquivalent());
 
     EXPECT_EQ(Position(five, 0), startOfLine(createVisiblePositionInDOMTree(*two, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(five, 0), startOfLine(createVisiblePositionInComposedTree(*two, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(five, 0), startOfLine(createVisiblePositionInFlatTree(*two, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(five, 0), startOfLine(createVisiblePositionInDOMTree(*three, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(three, 0), startOfLine(createVisiblePositionInComposedTree(*three, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(three, 0), startOfLine(createVisiblePositionInFlatTree(*three, 1)).deepEquivalent());
 
     // TODO(yosin) startOfLine(four, 1) -> (two, 2) is a broken result. We keep
     // it as a marker for future change.
     EXPECT_EQ(Position(two, 2), startOfLine(createVisiblePositionInDOMTree(*four, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(three, 0), startOfLine(createVisiblePositionInComposedTree(*four, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(three, 0), startOfLine(createVisiblePositionInFlatTree(*four, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(five, 0), startOfLine(createVisiblePositionInDOMTree(*five, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(five, 0), startOfLine(createVisiblePositionInComposedTree(*five, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(five, 0), startOfLine(createVisiblePositionInFlatTree(*five, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(six, 0), startOfLine(createVisiblePositionInDOMTree(*six, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(six, 0), startOfLine(createVisiblePositionInComposedTree(*six, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(six, 0), startOfLine(createVisiblePositionInFlatTree(*six, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(one, 0), startOfLine(createVisiblePositionInDOMTree(*seven, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(one, 0), startOfLine(createVisiblePositionInComposedTree(*seven, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(one, 0), startOfLine(createVisiblePositionInFlatTree(*seven, 1)).deepEquivalent());
 }
 
 TEST_F(VisibleUnitsTest, startOfParagraph)
@@ -1211,15 +1211,15 @@
     Node* three = document().getElementById("three")->firstChild();
 
     EXPECT_EQ(Position(zero, 0), startOfParagraph(createVisiblePositionInDOMTree(*one, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(one, 0), startOfParagraph(createVisiblePositionInComposedTree(*one, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(one, 0), startOfParagraph(createVisiblePositionInFlatTree(*one, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(zero, 0), startOfParagraph(createVisiblePositionInDOMTree(*two, 2)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(two, 0), startOfParagraph(createVisiblePositionInComposedTree(*two, 2)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(two, 0), startOfParagraph(createVisiblePositionInFlatTree(*two, 2)).deepEquivalent());
 
     // DOM version of |startOfParagraph()| doesn't take account contents in
     // shadow tree.
     EXPECT_EQ(Position(zero, 0), startOfParagraph(createVisiblePositionInDOMTree(*three, 2)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(three, 0), startOfParagraph(createVisiblePositionInComposedTree(*three, 2)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(three, 0), startOfParagraph(createVisiblePositionInFlatTree(*three, 2)).deepEquivalent());
 
     // crbug.com/563777. startOfParagraph() unexpectedly returned a null
     // position with nested editable <BODY>s.
@@ -1251,22 +1251,22 @@
     Node* four = shadowRoot->getElementById("four")->firstChild();
 
     EXPECT_EQ(Position(one, 0), startOfSentence(createVisiblePositionInDOMTree(*one, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(three, 0), startOfSentence(createVisiblePositionInComposedTree(*one, 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(three, 0), startOfSentence(createVisiblePositionInFlatTree(*one, 0)).deepEquivalent());
 
     EXPECT_EQ(Position(one, 0), startOfSentence(createVisiblePositionInDOMTree(*one, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(three, 0), startOfSentence(createVisiblePositionInComposedTree(*one, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(three, 0), startOfSentence(createVisiblePositionInFlatTree(*one, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(one, 0), startOfSentence(createVisiblePositionInDOMTree(*two, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(three, 0), startOfSentence(createVisiblePositionInComposedTree(*two, 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(three, 0), startOfSentence(createVisiblePositionInFlatTree(*two, 0)).deepEquivalent());
 
     EXPECT_EQ(Position(one, 0), startOfSentence(createVisiblePositionInDOMTree(*two, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(three, 0), startOfSentence(createVisiblePositionInComposedTree(*two, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(three, 0), startOfSentence(createVisiblePositionInFlatTree(*two, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(three, 0), startOfSentence(createVisiblePositionInDOMTree(*three, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(three, 0), startOfSentence(createVisiblePositionInComposedTree(*three, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(three, 0), startOfSentence(createVisiblePositionInFlatTree(*three, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(three, 0), startOfSentence(createVisiblePositionInDOMTree(*four, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(three, 0), startOfSentence(createVisiblePositionInComposedTree(*four, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(three, 0), startOfSentence(createVisiblePositionInFlatTree(*four, 1)).deepEquivalent());
 }
 
 TEST_F(VisibleUnitsTest, startOfWord)
@@ -1285,25 +1285,25 @@
     Node* space = shadowRoot->getElementById("space")->firstChild();
 
     EXPECT_EQ(Position(one, 0), startOfWord(createVisiblePositionInDOMTree(*one, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(space, 1), startOfWord(createVisiblePositionInComposedTree(*one, 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(space, 1), startOfWord(createVisiblePositionInFlatTree(*one, 0)).deepEquivalent());
 
     EXPECT_EQ(Position(one, 0), startOfWord(createVisiblePositionInDOMTree(*one, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(space, 1), startOfWord(createVisiblePositionInComposedTree(*one, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(space, 1), startOfWord(createVisiblePositionInFlatTree(*one, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(one, 0), startOfWord(createVisiblePositionInDOMTree(*two, 0)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(four, 0), startOfWord(createVisiblePositionInComposedTree(*two, 0)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(four, 0), startOfWord(createVisiblePositionInFlatTree(*two, 0)).deepEquivalent());
 
     EXPECT_EQ(Position(one, 0), startOfWord(createVisiblePositionInDOMTree(*two, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(four, 0), startOfWord(createVisiblePositionInComposedTree(*two, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(four, 0), startOfWord(createVisiblePositionInFlatTree(*two, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(one, 0), startOfWord(createVisiblePositionInDOMTree(*three, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(space, 1), startOfWord(createVisiblePositionInComposedTree(*three, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(space, 1), startOfWord(createVisiblePositionInFlatTree(*three, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(four, 0), startOfWord(createVisiblePositionInDOMTree(*four, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(four, 0), startOfWord(createVisiblePositionInComposedTree(*four, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(four, 0), startOfWord(createVisiblePositionInFlatTree(*four, 1)).deepEquivalent());
 
     EXPECT_EQ(Position(space, 1), startOfWord(createVisiblePositionInDOMTree(*five, 1)).deepEquivalent());
-    EXPECT_EQ(PositionInComposedTree(space, 1), startOfWord(createVisiblePositionInComposedTree(*five, 1)).deepEquivalent());
+    EXPECT_EQ(PositionInFlatTree(space, 1), startOfWord(createVisiblePositionInFlatTree(*five, 1)).deepEquivalent());
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/iterators/BackwardsCharacterIterator.cpp b/third_party/WebKit/Source/core/editing/iterators/BackwardsCharacterIterator.cpp
index eb9b9f2..338de62 100644
--- a/third_party/WebKit/Source/core/editing/iterators/BackwardsCharacterIterator.cpp
+++ b/third_party/WebKit/Source/core/editing/iterators/BackwardsCharacterIterator.cpp
@@ -93,6 +93,6 @@
 }
 
 template class CORE_TEMPLATE_EXPORT BackwardsCharacterIteratorAlgorithm<EditingStrategy>;
-template class CORE_TEMPLATE_EXPORT BackwardsCharacterIteratorAlgorithm<EditingInComposedTreeStrategy>;
+template class CORE_TEMPLATE_EXPORT BackwardsCharacterIteratorAlgorithm<EditingInFlatTreeStrategy>;
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/iterators/BackwardsCharacterIterator.h b/third_party/WebKit/Source/core/editing/iterators/BackwardsCharacterIterator.h
index 4095b0e1..94ce561 100644
--- a/third_party/WebKit/Source/core/editing/iterators/BackwardsCharacterIterator.h
+++ b/third_party/WebKit/Source/core/editing/iterators/BackwardsCharacterIterator.h
@@ -54,7 +54,7 @@
 };
 
 extern template class CORE_EXTERN_TEMPLATE_EXPORT BackwardsCharacterIteratorAlgorithm<EditingStrategy>;
-extern template class CORE_EXTERN_TEMPLATE_EXPORT BackwardsCharacterIteratorAlgorithm<EditingInComposedTreeStrategy>;
+extern template class CORE_EXTERN_TEMPLATE_EXPORT BackwardsCharacterIteratorAlgorithm<EditingInFlatTreeStrategy>;
 
 using BackwardsCharacterIterator = BackwardsCharacterIteratorAlgorithm<EditingStrategy>;
 
diff --git a/third_party/WebKit/Source/core/editing/iterators/CharacterIterator.cpp b/third_party/WebKit/Source/core/editing/iterators/CharacterIterator.cpp
index e3e1e341..4f73fce 100644
--- a/third_party/WebKit/Source/core/editing/iterators/CharacterIterator.cpp
+++ b/third_party/WebKit/Source/core/editing/iterators/CharacterIterator.cpp
@@ -197,6 +197,6 @@
 }
 
 template class CORE_TEMPLATE_EXPORT CharacterIteratorAlgorithm<EditingStrategy>;
-template class CORE_TEMPLATE_EXPORT CharacterIteratorAlgorithm<EditingInComposedTreeStrategy>;
+template class CORE_TEMPLATE_EXPORT CharacterIteratorAlgorithm<EditingInFlatTreeStrategy>;
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/iterators/CharacterIterator.h b/third_party/WebKit/Source/core/editing/iterators/CharacterIterator.h
index 0137e9b..486021c1 100644
--- a/third_party/WebKit/Source/core/editing/iterators/CharacterIterator.h
+++ b/third_party/WebKit/Source/core/editing/iterators/CharacterIterator.h
@@ -81,7 +81,7 @@
 extern template class CORE_EXTERN_TEMPLATE_EXPORT CharacterIteratorAlgorithm<EditingStrategy>;
 using CharacterIterator = CharacterIteratorAlgorithm<EditingStrategy>;
 
-extern template class CORE_EXTERN_TEMPLATE_EXPORT CharacterIteratorAlgorithm<EditingInComposedTreeStrategy>;
+extern template class CORE_EXTERN_TEMPLATE_EXPORT CharacterIteratorAlgorithm<EditingInFlatTreeStrategy>;
 
 CORE_EXPORT EphemeralRange calculateCharacterSubrange(const EphemeralRange&, int characterOffset, int characterCount);
 
diff --git a/third_party/WebKit/Source/core/editing/iterators/FullyClippedStateStack.cpp b/third_party/WebKit/Source/core/editing/iterators/FullyClippedStateStack.cpp
index 5b3a7cd..6e39b3a 100644
--- a/third_party/WebKit/Source/core/editing/iterators/FullyClippedStateStack.cpp
+++ b/third_party/WebKit/Source/core/editing/iterators/FullyClippedStateStack.cpp
@@ -88,6 +88,6 @@
 }
 
 template class CORE_TEMPLATE_EXPORT FullyClippedStateStackAlgorithm<EditingStrategy>;
-template class CORE_TEMPLATE_EXPORT FullyClippedStateStackAlgorithm<EditingInComposedTreeStrategy>;
+template class CORE_TEMPLATE_EXPORT FullyClippedStateStackAlgorithm<EditingInFlatTreeStrategy>;
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/iterators/FullyClippedStateStack.h b/third_party/WebKit/Source/core/editing/iterators/FullyClippedStateStack.h
index e157c9c..5ccc09f 100644
--- a/third_party/WebKit/Source/core/editing/iterators/FullyClippedStateStack.h
+++ b/third_party/WebKit/Source/core/editing/iterators/FullyClippedStateStack.h
@@ -23,7 +23,7 @@
 };
 
 extern template class CORE_EXTERN_TEMPLATE_EXPORT FullyClippedStateStackAlgorithm<EditingStrategy>;
-extern template class CORE_EXTERN_TEMPLATE_EXPORT FullyClippedStateStackAlgorithm<EditingInComposedTreeStrategy>;
+extern template class CORE_EXTERN_TEMPLATE_EXPORT FullyClippedStateStackAlgorithm<EditingInFlatTreeStrategy>;
 
 using FullyClippedStateStack = FullyClippedStateStackAlgorithm<EditingStrategy>;
 
diff --git a/third_party/WebKit/Source/core/editing/iterators/SearchBuffer.cpp b/third_party/WebKit/Source/core/editing/iterators/SearchBuffer.cpp
index b49cfdd..f9d370e 100644
--- a/third_party/WebKit/Source/core/editing/iterators/SearchBuffer.cpp
+++ b/third_party/WebKit/Source/core/editing/iterators/SearchBuffer.cpp
@@ -449,9 +449,9 @@
     return findPlainTextAlgorithm<EditingStrategy>(inputRange, target, options);
 }
 
-EphemeralRangeInComposedTree findPlainText(const EphemeralRangeInComposedTree& inputRange, const String& target, FindOptions options)
+EphemeralRangeInFlatTree findPlainText(const EphemeralRangeInFlatTree& inputRange, const String& target, FindOptions options)
 {
-    return findPlainTextAlgorithm<EditingInComposedTreeStrategy>(inputRange, target, options);
+    return findPlainTextAlgorithm<EditingInFlatTreeStrategy>(inputRange, target, options);
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/iterators/SearchBuffer.h b/third_party/WebKit/Source/core/editing/iterators/SearchBuffer.h
index ec8cbd8bc..7847351 100644
--- a/third_party/WebKit/Source/core/editing/iterators/SearchBuffer.h
+++ b/third_party/WebKit/Source/core/editing/iterators/SearchBuffer.h
@@ -84,7 +84,7 @@
 };
 
 CORE_EXPORT EphemeralRange findPlainText(const EphemeralRange& inputRange, const String&, FindOptions);
-CORE_EXPORT EphemeralRangeInComposedTree findPlainText(const EphemeralRangeInComposedTree& inputRange, const String&, FindOptions);
+CORE_EXPORT EphemeralRangeInFlatTree findPlainText(const EphemeralRangeInFlatTree& inputRange, const String&, FindOptions);
 
 } // namespace blink
 
diff --git a/third_party/WebKit/Source/core/editing/iterators/SimplifiedBackwardsTextIterator.cpp b/third_party/WebKit/Source/core/editing/iterators/SimplifiedBackwardsTextIterator.cpp
index 71181a3..bc18302 100644
--- a/third_party/WebKit/Source/core/editing/iterators/SimplifiedBackwardsTextIterator.cpp
+++ b/third_party/WebKit/Source/core/editing/iterators/SimplifiedBackwardsTextIterator.cpp
@@ -447,7 +447,7 @@
 }
 
 template class CORE_TEMPLATE_EXPORT SimplifiedBackwardsTextIteratorAlgorithm<EditingStrategy>;
-template class CORE_TEMPLATE_EXPORT SimplifiedBackwardsTextIteratorAlgorithm<EditingInComposedTreeStrategy>;
+template class CORE_TEMPLATE_EXPORT SimplifiedBackwardsTextIteratorAlgorithm<EditingInFlatTreeStrategy>;
 
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/iterators/SimplifiedBackwardsTextIterator.h b/third_party/WebKit/Source/core/editing/iterators/SimplifiedBackwardsTextIterator.h
index 67e1dd7..89f2634b 100644
--- a/third_party/WebKit/Source/core/editing/iterators/SimplifiedBackwardsTextIterator.h
+++ b/third_party/WebKit/Source/core/editing/iterators/SimplifiedBackwardsTextIterator.h
@@ -132,7 +132,7 @@
 };
 
 extern template class CORE_EXTERN_TEMPLATE_EXPORT SimplifiedBackwardsTextIteratorAlgorithm<EditingStrategy>;
-extern template class CORE_EXTERN_TEMPLATE_EXPORT SimplifiedBackwardsTextIteratorAlgorithm<EditingInComposedTreeStrategy>;
+extern template class CORE_EXTERN_TEMPLATE_EXPORT SimplifiedBackwardsTextIteratorAlgorithm<EditingInFlatTreeStrategy>;
 
 using SimplifiedBackwardsTextIterator = SimplifiedBackwardsTextIteratorAlgorithm<EditingStrategy>;
 
diff --git a/third_party/WebKit/Source/core/editing/iterators/SimplifiedBackwardsTextIteratorTest.cpp b/third_party/WebKit/Source/core/editing/iterators/SimplifiedBackwardsTextIteratorTest.cpp
index b13324d..bed28cd 100644
--- a/third_party/WebKit/Source/core/editing/iterators/SimplifiedBackwardsTextIteratorTest.cpp
+++ b/third_party/WebKit/Source/core/editing/iterators/SimplifiedBackwardsTextIteratorTest.cpp
@@ -39,7 +39,7 @@
     // general. To record current behavior, we have this test. even if it
     // isn't intuitive.
     EXPECT_EQ("onetwo", extractString<EditingStrategy>(*host));
-    EXPECT_EQ("three two one zero", extractString<EditingInComposedTreeStrategy>(*host));
+    EXPECT_EQ("three two one zero", extractString<EditingInFlatTreeStrategy>(*host));
 }
 
 TEST_F(SimplifiedBackwardsTextIteratorTest, characterAt)
@@ -63,8 +63,8 @@
     EXPECT_EQ('n', backIter1.characterAt(1)) << message1;
     EXPECT_EQ('o', backIter1.characterAt(2)) << message1;
 
-    EphemeralRangeTemplate<EditingInComposedTreeStrategy> range2(EphemeralRangeTemplate<EditingInComposedTreeStrategy>::rangeOfContents(*host));
-    SimplifiedBackwardsTextIteratorAlgorithm<EditingInComposedTreeStrategy> backIter2(range2.startPosition(), range2.endPosition());
+    EphemeralRangeTemplate<EditingInFlatTreeStrategy> range2(EphemeralRangeTemplate<EditingInFlatTreeStrategy>::rangeOfContents(*host));
+    SimplifiedBackwardsTextIteratorAlgorithm<EditingInFlatTreeStrategy> backIter2(range2.startPosition(), range2.endPosition());
     const char* message2 = "|backIter2| should emit 'three ', 'two', ' ', 'one' and ' zero' in reverse order.";
     EXPECT_EQ('o', backIter2.characterAt(0)) << message2;
     EXPECT_EQ('r', backIter2.characterAt(1)) << message2;
@@ -114,8 +114,8 @@
     backIter1.copyTextTo(&output1, 1, 2);
     EXPECT_EQ("onetwo", String(output1.data(), output1.size())) << String::format(message, 1, "onetwo").utf8().data();
 
-    EphemeralRangeTemplate<EditingInComposedTreeStrategy> range2(EphemeralRangeTemplate<EditingInComposedTreeStrategy>::rangeOfContents(*host));
-    SimplifiedBackwardsTextIteratorAlgorithm<EditingInComposedTreeStrategy> backIter2(range2.startPosition(), range2.endPosition());
+    EphemeralRangeTemplate<EditingInFlatTreeStrategy> range2(EphemeralRangeTemplate<EditingInFlatTreeStrategy>::rangeOfContents(*host));
+    SimplifiedBackwardsTextIteratorAlgorithm<EditingInFlatTreeStrategy> backIter2(range2.startPosition(), range2.endPosition());
     BackwardsTextBuffer output2;
     backIter2.copyTextTo(&output2, 0, 2);
     EXPECT_EQ("ro", String(output2.data(), output2.size())) << String::format(message, 2, "ro").utf8().data();
diff --git a/third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp b/third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp
index 38481de..57b892e7 100644
--- a/third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp
+++ b/third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp
@@ -75,7 +75,7 @@
 }
 
 template <>
-TextIteratorBehaviorFlags adjustBehaviorFlags<EditingInComposedTreeStrategy>(TextIteratorBehaviorFlags flags)
+TextIteratorBehaviorFlags adjustBehaviorFlags<EditingInFlatTreeStrategy>(TextIteratorBehaviorFlags flags)
 {
     if (flags & TextIteratorForSelectionToString)
         flags |= TextIteratorExcludeAutofilledValue;
@@ -115,7 +115,7 @@
 }
 
 template <>
-int shadowDepthOf<EditingInComposedTreeStrategy>(const Node& startContainer, const Node& endContainer)
+int shadowDepthOf<EditingInFlatTreeStrategy>(const Node& startContainer, const Node& endContainer)
 {
     return 0;
 }
@@ -339,7 +339,7 @@
         //
         // 1. Iterate over child nodes, if we haven't done yet.
         // To support |TextIteratorEmitsImageAltText|, we don't traversal child
-        // nodes, in composed tree.
+        // nodes, in flat tree.
         Node* next = m_iterationProgress < HandledChildren && !isHTMLImageElement(*m_node) ? Strategy::firstChild(*m_node) : nullptr;
         m_offset = 0;
         if (!next) {
@@ -1165,12 +1165,12 @@
     return createPlainText<EditingStrategy>(range, behavior);
 }
 
-String plainText(const EphemeralRangeInComposedTree& range, TextIteratorBehaviorFlags behavior)
+String plainText(const EphemeralRangeInFlatTree& range, TextIteratorBehaviorFlags behavior)
 {
-    return createPlainText<EditingInComposedTreeStrategy>(range, behavior);
+    return createPlainText<EditingInFlatTreeStrategy>(range, behavior);
 }
 
 template class CORE_TEMPLATE_EXPORT TextIteratorAlgorithm<EditingStrategy>;
-template class CORE_TEMPLATE_EXPORT TextIteratorAlgorithm<EditingInComposedTreeStrategy>;
+template class CORE_TEMPLATE_EXPORT TextIteratorAlgorithm<EditingInFlatTreeStrategy>;
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/iterators/TextIterator.h b/third_party/WebKit/Source/core/editing/iterators/TextIterator.h
index 06b1950..8e0b8b82 100644
--- a/third_party/WebKit/Source/core/editing/iterators/TextIterator.h
+++ b/third_party/WebKit/Source/core/editing/iterators/TextIterator.h
@@ -44,7 +44,7 @@
 
 CORE_EXPORT String plainText(const EphemeralRange&, TextIteratorBehaviorFlags = TextIteratorDefaultBehavior);
 
-String plainText(const EphemeralRangeInComposedTree&, TextIteratorBehaviorFlags = TextIteratorDefaultBehavior);
+String plainText(const EphemeralRangeInFlatTree&, TextIteratorBehaviorFlags = TextIteratorDefaultBehavior);
 
 // Iterates through the DOM range, returning all the text, and 0-length boundaries
 // at points where replaced elements break up the text flow.  The text comes back in
@@ -202,10 +202,10 @@
 };
 
 extern template class CORE_EXTERN_TEMPLATE_EXPORT TextIteratorAlgorithm<EditingStrategy>;
-extern template class CORE_EXTERN_TEMPLATE_EXPORT TextIteratorAlgorithm<EditingInComposedTreeStrategy>;
+extern template class CORE_EXTERN_TEMPLATE_EXPORT TextIteratorAlgorithm<EditingInFlatTreeStrategy>;
 
 using TextIterator = TextIteratorAlgorithm<EditingStrategy>;
-using TextIteratorInComposedTree = TextIteratorAlgorithm<EditingInComposedTreeStrategy>;
+using TextIteratorInFlatTree = TextIteratorAlgorithm<EditingInFlatTreeStrategy>;
 
 } // namespace blink
 
diff --git a/third_party/WebKit/Source/core/editing/iterators/TextIteratorTest.cpp b/third_party/WebKit/Source/core/editing/iterators/TextIteratorTest.cpp
index 3134ba1..0587b2d 100644
--- a/third_party/WebKit/Source/core/editing/iterators/TextIteratorTest.cpp
+++ b/third_party/WebKit/Source/core/editing/iterators/TextIteratorTest.cpp
@@ -40,9 +40,9 @@
     using TextIteratorType = TextIterator;
 };
 
-struct ComposedTree : ComposedTreeTraversal {
-    using PositionType = PositionInComposedTree;
-    using TextIteratorType = TextIteratorInComposedTree;
+struct FlatTree : FlatTreeTraversal {
+    using PositionType = PositionInFlatTree;
+    using TextIteratorType = TextIteratorInFlatTree;
 };
 
 class TextIteratorTest : public EditingTestBase {
@@ -115,7 +115,7 @@
     static const char* input = "<p>Hello, \ntext</p><p>iterator.</p>";
     setBodyContent(input);
     EXPECT_EQ("[Hello, ][text][\n][\n][iterator.]", iterate<DOMTree>());
-    EXPECT_EQ("[Hello, ][text][\n][\n][iterator.]", iterate<ComposedTree>());
+    EXPECT_EQ("[Hello, ][text][\n][\n][iterator.]", iterate<FlatTree>());
 }
 
 TEST_F(TextIteratorTest, IgnoreAltTextInTextControls)
@@ -123,7 +123,7 @@
     static const char* input = "<p>Hello <input type='text' value='value'>!</p>";
     setBodyContent(input);
     EXPECT_EQ("[Hello ][][!]", iterate<DOMTree>(TextIteratorEmitsImageAltText));
-    EXPECT_EQ("[Hello ][][\n][value][\n][!]", iterate<ComposedTree>(TextIteratorEmitsImageAltText));
+    EXPECT_EQ("[Hello ][][\n][value][\n][!]", iterate<FlatTree>(TextIteratorEmitsImageAltText));
 }
 
 TEST_F(TextIteratorTest, DisplayAltTextInImageControls)
@@ -131,7 +131,7 @@
     static const char* input = "<p>Hello <input type='image' alt='alt'>!</p>";
     setBodyContent(input);
     EXPECT_EQ("[Hello ][alt][!]", iterate<DOMTree>(TextIteratorEmitsImageAltText));
-    EXPECT_EQ("[Hello ][alt][!]", iterate<ComposedTree>(TextIteratorEmitsImageAltText));
+    EXPECT_EQ("[Hello ][alt][!]", iterate<FlatTree>(TextIteratorEmitsImageAltText));
 }
 
 TEST_F(TextIteratorTest, NotEnteringTextControls)
@@ -139,7 +139,7 @@
     static const char* input = "<p>Hello <input type='text' value='input'>!</p>";
     setBodyContent(input);
     EXPECT_EQ("[Hello ][][!]", iterate<DOMTree>());
-    EXPECT_EQ("[Hello ][][\n][input][\n][!]", iterate<ComposedTree>());
+    EXPECT_EQ("[Hello ][][\n][input][\n][!]", iterate<FlatTree>());
 }
 
 TEST_F(TextIteratorTest, EnteringTextControlsWithOption)
@@ -147,7 +147,7 @@
     static const char* input = "<p>Hello <input type='text' value='input'>!</p>";
     setBodyContent(input);
     EXPECT_EQ("[Hello ][\n][input][!]", iterate<DOMTree>(TextIteratorEntersTextControls));
-    EXPECT_EQ("[Hello ][][\n][input][\n][!]", iterate<ComposedTree>(TextIteratorEntersTextControls));
+    EXPECT_EQ("[Hello ][][\n][input][\n][!]", iterate<FlatTree>(TextIteratorEntersTextControls));
 }
 
 TEST_F(TextIteratorTest, EnteringTextControlsWithOptionComplex)
@@ -155,7 +155,7 @@
     static const char* input = "<input type='text' value='Beginning of range'><div><div><input type='text' value='Under DOM nodes'></div></div><input type='text' value='End of range'>";
     setBodyContent(input);
     EXPECT_EQ("[\n][Beginning of range][\n][Under DOM nodes][\n][End of range]", iterate<DOMTree>(TextIteratorEntersTextControls));
-    EXPECT_EQ("[][\n][Beginning of range][\n][][\n][Under DOM nodes][\n][][\n][End of range]", iterate<ComposedTree>(TextIteratorEntersTextControls));
+    EXPECT_EQ("[][\n][Beginning of range][\n][][\n][Under DOM nodes][\n][][\n][End of range]", iterate<FlatTree>(TextIteratorEntersTextControls));
 }
 
 TEST_F(TextIteratorTest, NotEnteringTextControlHostingShadowTreeEvenWithOption)
@@ -168,7 +168,7 @@
     createShadowRootForElementWithIDAndSetInnerHTML(document(), "input", shadowContent);
     // FIXME: Why is an empty string emitted here?
     EXPECT_EQ("[Hello, ][][ iterator.]", iterate<DOMTree>());
-    EXPECT_EQ("[Hello, ][][shadow][ iterator.]", iterate<ComposedTree>());
+    EXPECT_EQ("[Hello, ][][shadow][ iterator.]", iterate<FlatTree>());
 }
 
 TEST_F(TextIteratorTest, NotEnteringShadowTree)
@@ -179,7 +179,7 @@
     createShadowRootForElementWithIDAndSetInnerHTML(document(), "host", shadowContent);
     // TextIterator doesn't emit "text" since its layoutObject is not created. The shadow tree is ignored.
     EXPECT_EQ("[Hello, ][ iterator.]", iterate<DOMTree>());
-    EXPECT_EQ("[Hello, ][shadow][ iterator.]", iterate<ComposedTree>());
+    EXPECT_EQ("[Hello, ][shadow][ iterator.]", iterate<FlatTree>());
 }
 
 TEST_F(TextIteratorTest, NotEnteringShadowTreeWithMultipleShadowTrees)
@@ -191,7 +191,7 @@
     createShadowRootForElementWithIDAndSetInnerHTML(document(), "host", shadowContent1);
     createShadowRootForElementWithIDAndSetInnerHTML(document(), "host", shadowContent2);
     EXPECT_EQ("[Hello, ][ iterator.]", iterate<DOMTree>());
-    EXPECT_EQ("[Hello, ][second shadow][ iterator.]", iterate<ComposedTree>());
+    EXPECT_EQ("[Hello, ][second shadow][ iterator.]", iterate<FlatTree>());
 }
 
 TEST_F(TextIteratorTest, NotEnteringShadowTreeWithNestedShadowTrees)
@@ -203,7 +203,7 @@
     RefPtrWillBeRawPtr<ShadowRoot> shadowRoot1 = createShadowRootForElementWithIDAndSetInnerHTML(document(), "host-in-document", shadowContent1);
     createShadowRootForElementWithIDAndSetInnerHTML(*shadowRoot1, "host-in-shadow", shadowContent2);
     EXPECT_EQ("[Hello, ][ iterator.]", iterate<DOMTree>());
-    EXPECT_EQ("[Hello, ][first ][second shadow][ iterator.]", iterate<ComposedTree>());
+    EXPECT_EQ("[Hello, ][first ][second shadow][ iterator.]", iterate<FlatTree>());
 }
 
 TEST_F(TextIteratorTest, NotEnteringShadowTreeWithContentInsertionPoint)
@@ -214,7 +214,7 @@
     createShadowRootForElementWithIDAndSetInnerHTML(document(), "host", shadowContent);
     // In this case a layoutObject for "text" is created, so it shows up here.
     EXPECT_EQ("[Hello, ][text][ iterator.]", iterate<DOMTree>());
-    EXPECT_EQ("[Hello, ][shadow ][text][ iterator.]", iterate<ComposedTree>());
+    EXPECT_EQ("[Hello, ][shadow ][text][ iterator.]", iterate<FlatTree>());
 }
 
 TEST_F(TextIteratorTest, EnteringShadowTreeWithOption)
@@ -225,7 +225,7 @@
     createShadowRootForElementWithIDAndSetInnerHTML(document(), "host", shadowContent);
     // TextIterator emits "shadow" since TextIteratorEntersOpenShadowRoots is specified.
     EXPECT_EQ("[Hello, ][shadow][ iterator.]", iterate<DOMTree>(TextIteratorEntersOpenShadowRoots));
-    EXPECT_EQ("[Hello, ][shadow][ iterator.]", iterate<ComposedTree>(TextIteratorEntersOpenShadowRoots));
+    EXPECT_EQ("[Hello, ][shadow][ iterator.]", iterate<FlatTree>(TextIteratorEntersOpenShadowRoots));
 }
 
 TEST_F(TextIteratorTest, EnteringShadowTreeWithMultipleShadowTreesWithOption)
@@ -238,7 +238,7 @@
     createShadowRootForElementWithIDAndSetInnerHTML(document(), "host", shadowContent2);
     // The first isn't emitted because a layoutObject for the first is not created.
     EXPECT_EQ("[Hello, ][second shadow][ iterator.]", iterate<DOMTree>(TextIteratorEntersOpenShadowRoots));
-    EXPECT_EQ("[Hello, ][second shadow][ iterator.]", iterate<ComposedTree>(TextIteratorEntersOpenShadowRoots));
+    EXPECT_EQ("[Hello, ][second shadow][ iterator.]", iterate<FlatTree>(TextIteratorEntersOpenShadowRoots));
 }
 
 TEST_F(TextIteratorTest, EnteringShadowTreeWithNestedShadowTreesWithOption)
@@ -250,7 +250,7 @@
     RefPtrWillBeRawPtr<ShadowRoot> shadowRoot1 = createShadowRootForElementWithIDAndSetInnerHTML(document(), "host-in-document", shadowContent1);
     createShadowRootForElementWithIDAndSetInnerHTML(*shadowRoot1, "host-in-shadow", shadowContent2);
     EXPECT_EQ("[Hello, ][first ][second shadow][ iterator.]", iterate<DOMTree>(TextIteratorEntersOpenShadowRoots));
-    EXPECT_EQ("[Hello, ][first ][second shadow][ iterator.]", iterate<ComposedTree>(TextIteratorEntersOpenShadowRoots));
+    EXPECT_EQ("[Hello, ][first ][second shadow][ iterator.]", iterate<FlatTree>(TextIteratorEntersOpenShadowRoots));
 }
 
 TEST_F(TextIteratorTest, EnteringShadowTreeWithContentInsertionPointWithOption)
@@ -263,7 +263,7 @@
     setBodyContent(bodyContent);
     createShadowRootForElementWithIDAndSetInnerHTML(document(), "host", shadowContent);
     EXPECT_EQ("[Hello, ][ shadow][text][ iterator.]", iterate<DOMTree>(TextIteratorEntersOpenShadowRoots));
-    EXPECT_EQ("[Hello, ][text][ shadow][ iterator.]", iterate<ComposedTree>(TextIteratorEntersOpenShadowRoots));
+    EXPECT_EQ("[Hello, ][text][ shadow][ iterator.]", iterate<FlatTree>(TextIteratorEntersOpenShadowRoots));
 }
 
 TEST_F(TextIteratorTest, StartingAtNodeInShadowRoot)
@@ -278,9 +278,9 @@
     Position end(outerDiv, PositionAnchorType::AfterChildren);
     EXPECT_EQ("[ shadow][text][ iterator.]", iteratePartial<DOMTree>(start, end, TextIteratorEntersOpenShadowRoots));
 
-    PositionInComposedTree startInComposedTree(spanInShadow, PositionAnchorType::BeforeChildren);
-    PositionInComposedTree endInComposedTree(outerDiv, PositionAnchorType::AfterChildren);
-    EXPECT_EQ("[text][ shadow][ iterator.]", iteratePartial<ComposedTree>(startInComposedTree, endInComposedTree, TextIteratorEntersOpenShadowRoots));
+    PositionInFlatTree startInFlatTree(spanInShadow, PositionAnchorType::BeforeChildren);
+    PositionInFlatTree endInFlatTree(outerDiv, PositionAnchorType::AfterChildren);
+    EXPECT_EQ("[text][ shadow][ iterator.]", iteratePartial<FlatTree>(startInFlatTree, endInFlatTree, TextIteratorEntersOpenShadowRoots));
 }
 
 TEST_F(TextIteratorTest, FinishingAtNodeInShadowRoot)
@@ -295,9 +295,9 @@
     Position end(spanInShadow, PositionAnchorType::AfterChildren);
     EXPECT_EQ("[Hello, ][ shadow]", iteratePartial<DOMTree>(start, end, TextIteratorEntersOpenShadowRoots));
 
-    PositionInComposedTree startInComposedTree(outerDiv, PositionAnchorType::BeforeChildren);
-    PositionInComposedTree endInComposedTree(spanInShadow, PositionAnchorType::AfterChildren);
-    EXPECT_EQ("[Hello, ][text][ shadow]", iteratePartial<ComposedTree>(startInComposedTree, endInComposedTree, TextIteratorEntersOpenShadowRoots));
+    PositionInFlatTree startInFlatTree(outerDiv, PositionAnchorType::BeforeChildren);
+    PositionInFlatTree endInFlatTree(spanInShadow, PositionAnchorType::AfterChildren);
+    EXPECT_EQ("[Hello, ][text][ shadow]", iteratePartial<FlatTree>(startInFlatTree, endInFlatTree, TextIteratorEntersOpenShadowRoots));
 }
 
 TEST_F(TextIteratorTest, FullyClipsContents)
@@ -308,7 +308,7 @@
         "</div>";
     setBodyContent(bodyContent);
     EXPECT_EQ("", iterate<DOMTree>());
-    EXPECT_EQ("", iterate<ComposedTree>());
+    EXPECT_EQ("", iterate<FlatTree>());
 }
 
 TEST_F(TextIteratorTest, IgnoresContainerClip)
@@ -322,7 +322,7 @@
         "</div>";
     setBodyContent(bodyContent);
     EXPECT_EQ("[but I am!]", iterate<DOMTree>());
-    EXPECT_EQ("[but I am!]", iterate<ComposedTree>());
+    EXPECT_EQ("[but I am!]", iterate<FlatTree>());
 }
 
 TEST_F(TextIteratorTest, FullyClippedContentsDistributed)
@@ -339,7 +339,7 @@
     createShadowRootForElementWithIDAndSetInnerHTML(document(), "host", shadowContent);
     // FIXME: The text below is actually invisible but TextIterator currently thinks it's visible.
     EXPECT_EQ("[\n][Am I visible?]", iterate<DOMTree>(TextIteratorEntersOpenShadowRoots));
-    EXPECT_EQ("", iterate<ComposedTree>(TextIteratorEntersOpenShadowRoots));
+    EXPECT_EQ("", iterate<FlatTree>(TextIteratorEntersOpenShadowRoots));
 }
 
 TEST_F(TextIteratorTest, IgnoresContainersClipDistributed)
@@ -357,7 +357,7 @@
     // FIXME: The text below is actually visible but TextIterator currently thinks it's invisible.
     // [\n][Nobody can find me!]
     EXPECT_EQ("", iterate<DOMTree>(TextIteratorEntersOpenShadowRoots));
-    EXPECT_EQ("[Nobody can find me!]", iterate<ComposedTree>(TextIteratorEntersOpenShadowRoots));
+    EXPECT_EQ("[Nobody can find me!]", iterate<FlatTree>(TextIteratorEntersOpenShadowRoots));
 }
 
 TEST_F(TextIteratorTest, EmitsReplacementCharForInput)
@@ -370,7 +370,7 @@
         "</div>";
     setBodyContent(bodyContent);
     EXPECT_EQ("[Before][\xEF\xBF\xBC][After]", iterate<DOMTree>(TextIteratorEmitsObjectReplacementCharacter));
-    EXPECT_EQ("[Before][\xEF\xBF\xBC][After]", iterate<ComposedTree>(TextIteratorEmitsObjectReplacementCharacter));
+    EXPECT_EQ("[Before][\xEF\xBF\xBC][After]", iterate<FlatTree>(TextIteratorEmitsObjectReplacementCharacter));
 }
 
 TEST_F(TextIteratorTest, RangeLengthWithReplacedElements)
@@ -391,7 +391,7 @@
     static const char* bodyContent = "<span>Some text </span> <input type='button' value='Button text'/><span>Some more text</span>";
     setBodyContent(bodyContent);
     EXPECT_EQ("[Some text ][][Some more text]", iterate<DOMTree>(TextIteratorCollapseTrailingSpace));
-    EXPECT_EQ("[Some text ][][Button text][Some more text]", iterate<ComposedTree>(TextIteratorCollapseTrailingSpace));
+    EXPECT_EQ("[Some text ][][Button text][Some more text]", iterate<FlatTree>(TextIteratorCollapseTrailingSpace));
 }
 
 TEST_F(TextIteratorTest, copyTextTo)
@@ -418,8 +418,8 @@
     iter1.copyTextTo(&output1, 1, 2);
     EXPECT_EQ("onetwo", String(output1.data(), output1.size())) << String::format(message, 1, "onetwo").utf8().data();
 
-    EphemeralRangeTemplate<EditingInComposedTreeStrategy> range2(EphemeralRangeTemplate<EditingInComposedTreeStrategy>::rangeOfContents(*host));
-    TextIteratorAlgorithm<EditingInComposedTreeStrategy> iter2(range2.startPosition(), range2.endPosition());
+    EphemeralRangeTemplate<EditingInFlatTreeStrategy> range2(EphemeralRangeTemplate<EditingInFlatTreeStrategy>::rangeOfContents(*host));
+    TextIteratorAlgorithm<EditingInFlatTreeStrategy> iter2(range2.startPosition(), range2.endPosition());
     ForwardsTextBuffer output2;
     iter2.copyTextTo(&output2, 0, 3);
     EXPECT_EQ("thr", String(output2.data(), output2.size())) << String::format(message, 2, "thr").utf8().data();
@@ -466,8 +466,8 @@
     EXPECT_EQ('w', iter1.characterAt(1)) << message1;
     EXPECT_EQ('o', iter1.characterAt(2)) << message1;
 
-    EphemeralRangeTemplate<EditingInComposedTreeStrategy> range2(EphemeralRangeTemplate<EditingInComposedTreeStrategy>::rangeOfContents(*host));
-    TextIteratorAlgorithm<EditingInComposedTreeStrategy> iter2(range2.startPosition(), range2.endPosition());
+    EphemeralRangeTemplate<EditingInFlatTreeStrategy> range2(EphemeralRangeTemplate<EditingInFlatTreeStrategy>::rangeOfContents(*host));
+    TextIteratorAlgorithm<EditingInFlatTreeStrategy> iter2(range2.startPosition(), range2.endPosition());
     const char* message2 = "|iter2| should emit 'three ', 'two', ' ', 'one' and ' zero'.";
     EXPECT_EQ('t', iter2.characterAt(0)) << message2;
     EXPECT_EQ('h', iter2.characterAt(1)) << message2;
diff --git a/third_party/WebKit/Source/core/editing/serializers/Serialization.cpp b/third_party/WebKit/Source/core/editing/serializers/Serialization.cpp
index a9908a2..6b8dae3 100644
--- a/third_party/WebKit/Source/core/editing/serializers/Serialization.cpp
+++ b/third_party/WebKit/Source/core/editing/serializers/Serialization.cpp
@@ -267,9 +267,9 @@
     return CreateMarkupAlgorithm<EditingStrategy>::createMarkup(startPosition, endPosition, shouldAnnotate, convertBlocksToInlines, shouldResolveURLs, constrainingAncestor);
 }
 
-String createMarkup(const PositionInComposedTree& startPosition, const PositionInComposedTree& endPosition, EAnnotateForInterchange shouldAnnotate, ConvertBlocksToInlines convertBlocksToInlines, EAbsoluteURLs shouldResolveURLs, Node* constrainingAncestor)
+String createMarkup(const PositionInFlatTree& startPosition, const PositionInFlatTree& endPosition, EAnnotateForInterchange shouldAnnotate, ConvertBlocksToInlines convertBlocksToInlines, EAbsoluteURLs shouldResolveURLs, Node* constrainingAncestor)
 {
-    return CreateMarkupAlgorithm<EditingInComposedTreeStrategy>::createMarkup(startPosition, endPosition, shouldAnnotate, convertBlocksToInlines, shouldResolveURLs, constrainingAncestor);
+    return CreateMarkupAlgorithm<EditingInFlatTreeStrategy>::createMarkup(startPosition, endPosition, shouldAnnotate, convertBlocksToInlines, shouldResolveURLs, constrainingAncestor);
 }
 
 PassRefPtrWillBeRawPtr<DocumentFragment> createFragmentFromMarkup(Document& document, const String& markup, const String& baseURL, ParserContentPolicy parserContentPolicy)
@@ -702,6 +702,6 @@
 }
 
 template class CORE_TEMPLATE_EXPORT CreateMarkupAlgorithm<EditingStrategy>;
-template class CORE_TEMPLATE_EXPORT CreateMarkupAlgorithm<EditingInComposedTreeStrategy>;
+template class CORE_TEMPLATE_EXPORT CreateMarkupAlgorithm<EditingInFlatTreeStrategy>;
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/serializers/Serialization.h b/third_party/WebKit/Source/core/editing/serializers/Serialization.h
index 80c5e001..9c3fdec 100644
--- a/third_party/WebKit/Source/core/editing/serializers/Serialization.h
+++ b/third_party/WebKit/Source/core/editing/serializers/Serialization.h
@@ -68,7 +68,7 @@
 CORE_EXPORT String createMarkup(const Node*, EChildrenOnly = IncludeNode, EAbsoluteURLs = DoNotResolveURLs);
 
 CORE_EXPORT String createMarkup(const Position& start, const Position& end, EAnnotateForInterchange = DoNotAnnotateForInterchange, ConvertBlocksToInlines = ConvertBlocksToInlines::NotConvert, EAbsoluteURLs = DoNotResolveURLs, Node* constrainingAncestor = nullptr);
-CORE_EXPORT String createMarkup(const PositionInComposedTree& start, const PositionInComposedTree& end, EAnnotateForInterchange = DoNotAnnotateForInterchange, ConvertBlocksToInlines = ConvertBlocksToInlines::NotConvert, EAbsoluteURLs = DoNotResolveURLs, Node* constrainingAncestor = nullptr);
+CORE_EXPORT String createMarkup(const PositionInFlatTree& start, const PositionInFlatTree& end, EAnnotateForInterchange = DoNotAnnotateForInterchange, ConvertBlocksToInlines = ConvertBlocksToInlines::NotConvert, EAbsoluteURLs = DoNotResolveURLs, Node* constrainingAncestor = nullptr);
 
 String urlToMarkup(const KURL&, const String& title);
 void mergeWithNextTextNode(Text*, ExceptionState&);
diff --git a/third_party/WebKit/Source/core/editing/serializers/StyledMarkupSerializer.cpp b/third_party/WebKit/Source/core/editing/serializers/StyledMarkupSerializer.cpp
index 696e40d..638692eb 100644
--- a/third_party/WebKit/Source/core/editing/serializers/StyledMarkupSerializer.cpp
+++ b/third_party/WebKit/Source/core/editing/serializers/StyledMarkupSerializer.cpp
@@ -69,7 +69,7 @@
 }
 
 template<>
-bool handleSelectionBoundary<EditingInComposedTreeStrategy>(const Node& node)
+bool handleSelectionBoundary<EditingInFlatTreeStrategy>(const Node& node)
 {
     if (!node.isElementNode())
         return false;
@@ -285,10 +285,10 @@
     Node* lastClosed = nullptr;
     for (Node* n = startNode; n && n != pastEnd; n = next) {
         // If |n| is a selection boundary such as <input>, traverse the child
-        // nodes in the DOM tree instead of the composed tree.
+        // nodes in the DOM tree instead of the flat tree.
         if (handleSelectionBoundary<Strategy>(*n)) {
             lastClosed = StyledMarkupTraverser<EditingStrategy>(m_accumulator, m_lastClosed.get()).traverse(n, EditingStrategy::nextSkippingChildren(*n));
-            next = EditingInComposedTreeStrategy::nextSkippingChildren(*n);
+            next = EditingInFlatTreeStrategy::nextSkippingChildren(*n);
         } else {
             next = Strategy::next(*n);
             if (isEnclosingBlock(n) && canHaveChildrenForEditing(n) && next == pastEnd) {
@@ -478,6 +478,6 @@
 }
 
 template class StyledMarkupSerializer<EditingStrategy>;
-template class StyledMarkupSerializer<EditingInComposedTreeStrategy>;
+template class StyledMarkupSerializer<EditingInFlatTreeStrategy>;
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/serializers/StyledMarkupSerializer.h b/third_party/WebKit/Source/core/editing/serializers/StyledMarkupSerializer.h
index 92980b1..0a13f70d 100644
--- a/third_party/WebKit/Source/core/editing/serializers/StyledMarkupSerializer.h
+++ b/third_party/WebKit/Source/core/editing/serializers/StyledMarkupSerializer.h
@@ -60,7 +60,7 @@
 };
 
 extern template class StyledMarkupSerializer<EditingStrategy>;
-extern template class StyledMarkupSerializer<EditingInComposedTreeStrategy>;
+extern template class StyledMarkupSerializer<EditingInFlatTreeStrategy>;
 
 } // namespace blink
 
diff --git a/third_party/WebKit/Source/core/editing/serializers/StyledMarkupSerializerTest.cpp b/third_party/WebKit/Source/core/editing/serializers/StyledMarkupSerializerTest.cpp
index c0cad22..272bc18 100644
--- a/third_party/WebKit/Source/core/editing/serializers/StyledMarkupSerializerTest.cpp
+++ b/third_party/WebKit/Source/core/editing/serializers/StyledMarkupSerializerTest.cpp
@@ -52,7 +52,7 @@
     setBodyContent(bodyContent);
     const char* expectedResult = "<span style=\"display: inline !important; float: none;\">Hello world!</span>";
     EXPECT_EQ(expectedResult, serialize<EditingStrategy>());
-    EXPECT_EQ(expectedResult, serialize<EditingInComposedTreeStrategy>());
+    EXPECT_EQ(expectedResult, serialize<EditingInFlatTreeStrategy>());
 }
 
 TEST_F(StyledMarkupSerializerTest, BlockFormatting)
@@ -60,7 +60,7 @@
     const char* bodyContent = "<div>Hello world!</div>";
     setBodyContent(bodyContent);
     EXPECT_EQ(bodyContent, serialize<EditingStrategy>());
-    EXPECT_EQ(bodyContent, serialize<EditingInComposedTreeStrategy>());
+    EXPECT_EQ(bodyContent, serialize<EditingInFlatTreeStrategy>());
 }
 
 TEST_F(StyledMarkupSerializerTest, FormControlInput)
@@ -69,7 +69,7 @@
     setBodyContent(bodyContent);
     const char* expectedResult = "<input value=\"foo\">";
     EXPECT_EQ(expectedResult, serialize<EditingStrategy>());
-    EXPECT_EQ(expectedResult, serialize<EditingInComposedTreeStrategy>());
+    EXPECT_EQ(expectedResult, serialize<EditingInFlatTreeStrategy>());
 }
 
 TEST_F(StyledMarkupSerializerTest, FormControlInputRange)
@@ -78,7 +78,7 @@
     setBodyContent(bodyContent);
     const char* expectedResult = "<input type=\"range\">";
     EXPECT_EQ(expectedResult, serialize<EditingStrategy>());
-    EXPECT_EQ(expectedResult, serialize<EditingInComposedTreeStrategy>());
+    EXPECT_EQ(expectedResult, serialize<EditingInFlatTreeStrategy>());
 }
 
 TEST_F(StyledMarkupSerializerTest, FormControlSelect)
@@ -86,7 +86,7 @@
     const char* bodyContent = "<select><option value=\"1\">one</option><option value=\"2\">two</option></select>";
     setBodyContent(bodyContent);
     EXPECT_EQ(bodyContent, serialize<EditingStrategy>());
-    EXPECT_EQ(bodyContent, serialize<EditingInComposedTreeStrategy>());
+    EXPECT_EQ(bodyContent, serialize<EditingInFlatTreeStrategy>());
 }
 
 TEST_F(StyledMarkupSerializerTest, FormControlTextArea)
@@ -96,7 +96,7 @@
     const char* expectedResult = "<textarea></textarea>";
     EXPECT_EQ(expectedResult, serialize<EditingStrategy>())
         << "contents of TEXTAREA element should not be appeared.";
-    EXPECT_EQ(expectedResult, serialize<EditingInComposedTreeStrategy>());
+    EXPECT_EQ(expectedResult, serialize<EditingInFlatTreeStrategy>());
 }
 
 TEST_F(StyledMarkupSerializerTest, HeadingFormatting)
@@ -104,7 +104,7 @@
     const char* bodyContent = "<h4>Hello world!</h4>";
     setBodyContent(bodyContent);
     EXPECT_EQ(bodyContent, serialize<EditingStrategy>());
-    EXPECT_EQ(bodyContent, serialize<EditingInComposedTreeStrategy>());
+    EXPECT_EQ(bodyContent, serialize<EditingInFlatTreeStrategy>());
 }
 
 TEST_F(StyledMarkupSerializerTest, InlineFormatting)
@@ -112,7 +112,7 @@
     const char* bodyContent = "<b>Hello world!</b>";
     setBodyContent(bodyContent);
     EXPECT_EQ(bodyContent, serialize<EditingStrategy>());
-    EXPECT_EQ(bodyContent, serialize<EditingInComposedTreeStrategy>());
+    EXPECT_EQ(bodyContent, serialize<EditingInFlatTreeStrategy>());
 }
 
 TEST_F(StyledMarkupSerializerTest, Mixed)
@@ -120,7 +120,7 @@
     const char* bodyContent = "<i>foo<b>bar</b>baz</i>";
     setBodyContent(bodyContent);
     EXPECT_EQ(bodyContent, serialize<EditingStrategy>());
-    EXPECT_EQ(bodyContent, serialize<EditingInComposedTreeStrategy>());
+    EXPECT_EQ(bodyContent, serialize<EditingInFlatTreeStrategy>());
 }
 
 TEST_F(StyledMarkupSerializerTest, ShadowTreeDistributeOrder)
@@ -131,7 +131,7 @@
     setShadowContent(shadowContent, "host");
     EXPECT_EQ("<p id=\"host\"><b id=\"one\">11</b><b id=\"two\">22</b></p>", serialize<EditingStrategy>())
         << "00 and 33 aren't appeared since they aren't distributed.";
-    EXPECT_EQ("<p id=\"host\"><a><b id=\"two\">22</b><b id=\"one\">11</b></a></p>", serialize<EditingInComposedTreeStrategy>())
+    EXPECT_EQ("<p id=\"host\"><a><b id=\"two\">22</b><b id=\"one\">11</b></a></p>", serialize<EditingInFlatTreeStrategy>())
         << "00 and 33 aren't appeared since they aren't distributed.";
 }
 
@@ -143,7 +143,7 @@
     setShadowContent(shadowContent, "host");
     EXPECT_EQ("<p id=\"host\"><b id=\"one\">11</b><b id=\"two\"><input value=\"22\"></b></p>", serialize<EditingStrategy>())
         << "00 and 33 aren't appeared since they aren't distributed.";
-    EXPECT_EQ("<p id=\"host\"><a><b id=\"two\"><input value=\"22\"></b><b id=\"one\">11</b></a></p>", serialize<EditingInComposedTreeStrategy>())
+    EXPECT_EQ("<p id=\"host\"><a><b id=\"two\"><input value=\"22\"></b><b id=\"one\">11</b></a></p>", serialize<EditingInFlatTreeStrategy>())
         << "00 and 33 aren't appeared since they aren't distributed.";
 }
 
@@ -158,7 +158,7 @@
 
     EXPECT_EQ("<p id=\"host\"><b id=\"one\">11</b><b id=\"two\">22</b></p>", serialize<EditingStrategy>())
         << "00 and 33 aren't appeared since they aren't distributed.";
-    EXPECT_EQ("<p id=\"host\"><a><b id=\"two\">22</b><b id=\"host2\">NESTED</b><b id=\"one\">11</b></a></p>", serialize<EditingInComposedTreeStrategy>())
+    EXPECT_EQ("<p id=\"host\"><a><b id=\"two\">22</b><b id=\"host2\">NESTED</b><b id=\"one\">11</b></a></p>", serialize<EditingInFlatTreeStrategy>())
         << "00 and 33 aren't appeared since they aren't distributed.";
 }
 
@@ -170,14 +170,14 @@
     setShadowContent(shadowContent, "host");
 
     std::string resultFromDOMTree = serialize<EditingStrategy>(AnnotateForInterchange);
-    std::string resultFromComposedTree = serialize<EditingInComposedTreeStrategy>(AnnotateForInterchange);
-    size_t mismatchedIndex = mismatch(resultFromDOMTree, resultFromComposedTree);
+    std::string resultFromFlatTree = serialize<EditingInFlatTreeStrategy>(AnnotateForInterchange);
+    size_t mismatchedIndex = mismatch(resultFromDOMTree, resultFromFlatTree);
 
-    // Note: We check difference between DOM tree result and composed tree
+    // Note: We check difference between DOM tree result and flat tree
     // result, because results contain "style" attribute and this test
     // doesn't care about actual value of "style" attribute.
     EXPECT_EQ("/a>", resultFromDOMTree.substr(mismatchedIndex));
-    EXPECT_EQ("div><br></div></a><br class=\"Apple-interchange-newline\">", resultFromComposedTree.substr(mismatchedIndex));
+    EXPECT_EQ("div><br></div></a><br class=\"Apple-interchange-newline\">", resultFromFlatTree.substr(mismatchedIndex));
 }
 
 TEST_F(StyledMarkupSerializerTest, StyleDisplayNone)
@@ -186,7 +186,7 @@
     setBodyContent(bodyContent);
     const char* expectedResult = "<b>0022</b>";
     EXPECT_EQ(expectedResult, serialize<EditingStrategy>());
-    EXPECT_EQ(expectedResult, serialize<EditingInComposedTreeStrategy>());
+    EXPECT_EQ(expectedResult, serialize<EditingInFlatTreeStrategy>());
 }
 
 TEST_F(StyledMarkupSerializerTest, StyleDisplayNoneAndNewLines)
@@ -194,7 +194,7 @@
     const char* bodyContent = "<div style='display:none'>11</div>\n\n";
     setBodyContent(bodyContent);
     EXPECT_EQ("", serialize<EditingStrategy>());
-    EXPECT_EQ("", serialize<EditingInComposedTreeStrategy>());
+    EXPECT_EQ("", serialize<EditingInFlatTreeStrategy>());
 }
 
 TEST_F(StyledMarkupSerializerTest, ShadowTreeStyle)
@@ -213,9 +213,9 @@
     setShadowContent(shadowContent, "host");
     one = document().getElementById("one");
     text = toText(one->firstChild());
-    PositionInComposedTree startICT(text, 0);
-    PositionInComposedTree endICT(text, 2);
-    const std::string& serializedICT = serializePart<EditingInComposedTreeStrategy>(startICT, endICT, AnnotateForInterchange);
+    PositionInFlatTree startICT(text, 0);
+    PositionInFlatTree endICT(text, 2);
+    const std::string& serializedICT = serializePart<EditingInFlatTreeStrategy>(startICT, endICT, AnnotateForInterchange);
 
     EXPECT_EQ(serializedDOM, serializedICT);
 }
@@ -238,9 +238,9 @@
     setShadowContent(shadowContent2, "host2");
     one = document().getElementById("one");
     two = document().getElementById("two");
-    PositionInComposedTree startICT(toText(one->firstChild()), 0);
-    PositionInComposedTree endICT(toText(two->firstChild()), 2);
-    const std::string& serializedICT = serializePart<EditingInComposedTreeStrategy>(startICT, endICT, AnnotateForInterchange);
+    PositionInFlatTree startICT(toText(one->firstChild()), 0);
+    PositionInFlatTree endICT(toText(two->firstChild()), 2);
+    const std::string& serializedICT = serializePart<EditingInFlatTreeStrategy>(startICT, endICT, AnnotateForInterchange);
 
     EXPECT_EQ(serializedDOM, serializedICT);
 }
@@ -254,9 +254,9 @@
     Position startDOM = Position::firstPositionInNode(span1.get());
     Position endDOM = Position::lastPositionInNode(span2.get());
     EXPECT_EQ("", serializePart<EditingStrategy>(startDOM, endDOM));
-    PositionInComposedTree startICT = PositionInComposedTree::firstPositionInNode(span1.get());
-    PositionInComposedTree endICT = PositionInComposedTree::lastPositionInNode(span2.get());
-    EXPECT_EQ("", serializePart<EditingInComposedTreeStrategy>(startICT, endICT));
+    PositionInFlatTree startICT = PositionInFlatTree::firstPositionInNode(span1.get());
+    PositionInFlatTree endICT = PositionInFlatTree::lastPositionInNode(span2.get());
+    EXPECT_EQ("", serializePart<EditingInFlatTreeStrategy>(startICT, endICT));
 }
 
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp b/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp
index 118fa20..51ad645 100644
--- a/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp
+++ b/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp
@@ -265,6 +265,7 @@
         return nullptr;
 
     if (m_context->is3d()) {
+        document().updateLayoutTreeForNodeIfNeeded(this);
         const ComputedStyle* style = ensureComputedStyle();
         if (style)
             m_context->setFilterQuality(style->imageRendering() == ImageRenderingPixelated ? kNone_SkFilterQuality : kLow_SkFilterQuality);
diff --git a/third_party/WebKit/Source/core/html/HTMLElement.cpp b/third_party/WebKit/Source/core/html/HTMLElement.cpp
index bc3c1bd8..d9e5e99 100644
--- a/third_party/WebKit/Source/core/html/HTMLElement.cpp
+++ b/third_party/WebKit/Source/core/html/HTMLElement.cpp
@@ -38,8 +38,8 @@
 #include "core/dom/ExceptionCode.h"
 #include "core/dom/NodeTraversal.h"
 #include "core/dom/Text.h"
-#include "core/dom/shadow/ComposedTreeTraversal.h"
 #include "core/dom/shadow/ElementShadow.h"
+#include "core/dom/shadow/FlatTreeTraversal.h"
 #include "core/dom/shadow/ShadowRoot.h"
 #include "core/editing/serializers/Serialization.h"
 #include "core/events/EventListener.h"
@@ -729,12 +729,12 @@
         return textDirection;
     }
 
-    Node* node = ComposedTreeTraversal::firstChild(*this);
+    Node* node = FlatTreeTraversal::firstChild(*this);
     while (node) {
         // Skip bdi, script, style and text form controls.
         if (equalIgnoringCase(node->nodeName(), "bdi") || isHTMLScriptElement(*node) || isHTMLStyleElement(*node)
             || (node->isElementNode() && toElement(node)->isTextFormControl())) {
-            node = ComposedTreeTraversal::nextSkippingChildren(*node, this);
+            node = FlatTreeTraversal::nextSkippingChildren(*node, this);
             continue;
         }
 
@@ -742,7 +742,7 @@
         if (node->isElementNode()) {
             AtomicString dirAttributeValue = toElement(node)->fastGetAttribute(dirAttr);
             if (isValidDirAttribute(dirAttributeValue)) {
-                node = ComposedTreeTraversal::nextSkippingChildren(*node, this);
+                node = FlatTreeTraversal::nextSkippingChildren(*node, this);
                 continue;
             }
         }
@@ -756,7 +756,7 @@
                 return textDirection;
             }
         }
-        node = ComposedTreeTraversal::next(*node, this);
+        node = FlatTreeTraversal::next(*node, this);
     }
     if (strongDirectionalityTextNode)
         *strongDirectionalityTextNode = 0;
@@ -773,7 +773,7 @@
     // If an ancestor has dir=auto, and this node has the first character,
     // changes to dir attribute may affect the ancestor.
     updateDistribution();
-    Element* parent = ComposedTreeTraversal::parentElement(*this);
+    Element* parent = FlatTreeTraversal::parentElement(*this);
     if (parent && parent->isHTMLElement() && toHTMLElement(parent)->selfOrAncestorHasDirAutoAttribute())
         toHTMLElement(parent)->adjustDirectionalityIfNeededAfterChildAttributeChanged(this);
 
@@ -787,7 +787,7 @@
     TextDirection textDirection = directionality();
     if (layoutObject() && layoutObject()->style() && layoutObject()->style()->direction() != textDirection) {
         Element* elementToAdjust = this;
-        for (; elementToAdjust; elementToAdjust = ComposedTreeTraversal::parentElement(*elementToAdjust)) {
+        for (; elementToAdjust; elementToAdjust = FlatTreeTraversal::parentElement(*elementToAdjust)) {
             if (elementAffectsDirectionality(elementToAdjust)) {
                 elementToAdjust->setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing::create(StyleChangeReason::WritingModeChange));
                 return;
@@ -810,7 +810,7 @@
 
     updateDistribution();
 
-    for (Element* elementToAdjust = this; elementToAdjust; elementToAdjust = ComposedTreeTraversal::parentElement(*elementToAdjust)) {
+    for (Element* elementToAdjust = this; elementToAdjust; elementToAdjust = FlatTreeTraversal::parentElement(*elementToAdjust)) {
         if (elementAffectsDirectionality(elementToAdjust)) {
             toHTMLElement(elementToAdjust)->calculateAndAdjustDirectionality();
             return;
diff --git a/third_party/WebKit/Source/core/html/HTMLSummaryElement.cpp b/third_party/WebKit/Source/core/html/HTMLSummaryElement.cpp
index 1ca52f98..5a7a5b9 100644
--- a/third_party/WebKit/Source/core/html/HTMLSummaryElement.cpp
+++ b/third_party/WebKit/Source/core/html/HTMLSummaryElement.cpp
@@ -22,7 +22,7 @@
 
 #include "bindings/core/v8/ExceptionStatePlaceholder.h"
 #include "core/HTMLNames.h"
-#include "core/dom/shadow/ComposedTreeTraversal.h"
+#include "core/dom/shadow/FlatTreeTraversal.h"
 #include "core/dom/shadow/ShadowRoot.h"
 #include "core/events/KeyboardEvent.h"
 #include "core/html/HTMLContentElement.h"
diff --git a/third_party/WebKit/Source/core/html/HTMLTablePartElement.cpp b/third_party/WebKit/Source/core/html/HTMLTablePartElement.cpp
index 9969d71..f104c50b 100644
--- a/third_party/WebKit/Source/core/html/HTMLTablePartElement.cpp
+++ b/third_party/WebKit/Source/core/html/HTMLTablePartElement.cpp
@@ -30,7 +30,7 @@
 #include "core/css/CSSImageValue.h"
 #include "core/css/StylePropertySet.h"
 #include "core/dom/Document.h"
-#include "core/dom/shadow/ComposedTreeTraversal.h"
+#include "core/dom/shadow/FlatTreeTraversal.h"
 #include "core/html/HTMLTableElement.h"
 #include "core/html/parser/HTMLParserIdioms.h"
 #include "platform/weborigin/Referrer.h"
@@ -89,9 +89,9 @@
 
 HTMLTableElement* HTMLTablePartElement::findParentTable() const
 {
-    ContainerNode* parent = ComposedTreeTraversal::parent(*this);
+    ContainerNode* parent = FlatTreeTraversal::parent(*this);
     while (parent && !isHTMLTableElement(*parent))
-        parent = ComposedTreeTraversal::parent(*parent);
+        parent = FlatTreeTraversal::parent(*parent);
     return toHTMLTableElement(parent);
 }
 
diff --git a/third_party/WebKit/Source/core/html/HTMLTextFormControlElement.cpp b/third_party/WebKit/Source/core/html/HTMLTextFormControlElement.cpp
index 1110e6f8..35b4b14 100644
--- a/third_party/WebKit/Source/core/html/HTMLTextFormControlElement.cpp
+++ b/third_party/WebKit/Source/core/html/HTMLTextFormControlElement.cpp
@@ -384,7 +384,7 @@
         newSelection.setWithoutValidation(startPosition, endPosition);
     newSelection.setIsDirectional(direction != SelectionHasNoDirection);
 
-    frame->selection().setSelection(newSelection, FrameSelection::DoNotAdjustInComposedTree | FrameSelection::CloseTyping | FrameSelection::ClearTypingStyle | (selectionOption == ChangeSelectionAndFocus ? 0 : FrameSelection::DoNotSetFocus));
+    frame->selection().setSelection(newSelection, FrameSelection::DoNotAdjustInFlatTree | FrameSelection::CloseTyping | FrameSelection::ClearTypingStyle | (selectionOption == ChangeSelectionAndFocus ? 0 : FrameSelection::DoNotSetFocus));
     if (eventBehaviour == DispatchSelectEvent)
         scheduleSelectEvent();
 }
diff --git a/third_party/WebKit/Source/core/input/EventHandler.cpp b/third_party/WebKit/Source/core/input/EventHandler.cpp
index 4939887c..e14f7c15 100644
--- a/third_party/WebKit/Source/core/input/EventHandler.cpp
+++ b/third_party/WebKit/Source/core/input/EventHandler.cpp
@@ -35,7 +35,7 @@
 #include "core/dom/DOMNodeIds.h"
 #include "core/dom/Document.h"
 #include "core/dom/TouchList.h"
-#include "core/dom/shadow/ComposedTreeTraversal.h"
+#include "core/dom/shadow/FlatTreeTraversal.h"
 #include "core/dom/shadow/ShadowRoot.h"
 #include "core/editing/Editor.h"
 #include "core/editing/FrameSelection.h"
@@ -527,7 +527,7 @@
 
     LayoutObject* layoutObject = targetNode->layoutObject();
     if (!layoutObject) {
-        Node* parent = ComposedTreeTraversal::parent(*targetNode);
+        Node* parent = FlatTreeTraversal::parent(*targetNode);
         if (!parent)
             return WebInputEventResult::NotHandled;
 
@@ -1054,7 +1054,7 @@
 #endif
 
     m_clickCount = mouseEvent.clickCount();
-    m_clickNode = mev.innerNode()->isTextNode() ?  ComposedTreeTraversal::parent(*mev.innerNode()) : mev.innerNode();
+    m_clickNode = mev.innerNode()->isTextNode() ?  FlatTreeTraversal::parent(*mev.innerNode()) : mev.innerNode();
 
     m_frame->selection().setCaretBlinkingSuspended(true);
 
@@ -1307,7 +1307,7 @@
     if (node.isHTMLElement() && toHTMLElement(node).isInteractiveContent())
         return nullptr;
 
-    return ComposedTreeTraversal::parent(node);
+    return FlatTreeTraversal::parent(node);
 }
 
 WebInputEventResult EventHandler::handleMouseReleaseEvent(const PlatformMouseEvent& mouseEvent)
@@ -1373,7 +1373,7 @@
 #endif
 
     WebInputEventResult clickEventResult = WebInputEventResult::NotHandled;
-    if (m_clickCount > 0 && !contextMenuEvent && mev.innerNode() && m_clickNode && mev.innerNode()->canParticipateInComposedTree() && m_clickNode->canParticipateInComposedTree()) {
+    if (m_clickCount > 0 && !contextMenuEvent && mev.innerNode() && m_clickNode && mev.innerNode()->canParticipateInFlatTree() && m_clickNode->canParticipateInFlatTree()) {
         // Updates distribution because a 'mouseup' event listener can make the
         // tree dirty at dispatchMouseEvent() invocation above.
         // Unless distribution is updated, commonAncestor would hit ASSERT.
@@ -1491,7 +1491,7 @@
     // Drag events should never go to text nodes (following IE, and proper mouseover/out dispatch)
     RefPtrWillBeRawPtr<Node> newTarget = mev.innerNode();
     if (newTarget && newTarget->isTextNode())
-        newTarget = ComposedTreeTraversal::parent(*newTarget);
+        newTarget = FlatTreeTraversal::parent(*newTarget);
 
     if (AutoscrollController* controller = autoscrollController())
         controller->updateDragAndDrop(newTarget.get(), event.position(), event.timestamp());
@@ -1611,7 +1611,7 @@
     } else {
         // If the target node is a text node, dispatch on the parent node - rdar://4196646
         if (result && result->isTextNode())
-            result = ComposedTreeTraversal::parent(*result);
+            result = FlatTreeTraversal::parent(*result);
     }
     RefPtrWillBeMember<Node> lastNodeUnderMouse = m_nodeUnderMouse;
     m_nodeUnderMouse = result;
@@ -1691,13 +1691,13 @@
     WillBeHeapVector<RefPtrWillBeMember<Node>, 32> enteredAncestors;
     if (isNodeInDocument(exitedNode)) {
         exitedNode->updateDistribution();
-        for (Node* node = exitedNode; node; node = ComposedTreeTraversal::parent(*node)) {
+        for (Node* node = exitedNode; node; node = FlatTreeTraversal::parent(*node)) {
             exitedAncestors.append(node);
         }
     }
     if (isNodeInDocument(enteredNode)) {
         enteredNode->updateDistribution();
-        for (Node* node = enteredNode; node; node = ComposedTreeTraversal::parent(*node)) {
+        for (Node* node = enteredNode; node; node = FlatTreeTraversal::parent(*node)) {
             enteredAncestors.append(node);
         }
     }
@@ -1976,7 +1976,7 @@
     Node* node = result.innerNode();
     // Wheel events should not dispatch to text nodes.
     if (node && node->isTextNode())
-        node = ComposedTreeTraversal::parent(*node);
+        node = FlatTreeTraversal::parent(*node);
 
     if (m_previousWheelScrolledNode)
         m_previousWheelScrolledNode = nullptr;
@@ -2278,7 +2278,7 @@
     IntPoint tappedPosition = gestureEvent.position();
 
     if (m_clickNode && m_clickNode->isTextNode())
-        m_clickNode = ComposedTreeTraversal::parent(*m_clickNode);
+        m_clickNode = FlatTreeTraversal::parent(*m_clickNode);
 
     PlatformMouseEvent fakeMouseDown(gestureEvent.position(), gestureEvent.globalPosition(),
         LeftButton, PlatformEvent::MousePressed, gestureEvent.tapCount(),
@@ -3979,7 +3979,7 @@
 
             // Touch events should not go to text nodes
             if (node->isTextNode())
-                node = ComposedTreeTraversal::parent(*node);
+                node = FlatTreeTraversal::parent(*node);
 
             if (!m_touchSequenceDocument) {
                 // Keep track of which document should receive all touch events
diff --git a/third_party/WebKit/Source/core/input/TouchActionUtil.cpp b/third_party/WebKit/Source/core/input/TouchActionUtil.cpp
index 3b94cb27..f08ccef 100644
--- a/third_party/WebKit/Source/core/input/TouchActionUtil.cpp
+++ b/third_party/WebKit/Source/core/input/TouchActionUtil.cpp
@@ -30,7 +30,7 @@
 
 const Node* parentNodeAcrossFrames(const Node* curNode)
 {
-    Node* parentNode = ComposedTreeTraversal::parent(*curNode);
+    Node* parentNode = FlatTreeTraversal::parent(*curNode);
     if (parentNode)
         return parentNode;
 
diff --git a/third_party/WebKit/Source/core/inspector/InspectorOverlayPage.html b/third_party/WebKit/Source/core/inspector/InspectorOverlayPage.html
index b6d6fc5..a1cc519c 100644
--- a/third_party/WebKit/Source/core/inspector/InspectorOverlayPage.html
+++ b/third_party/WebKit/Source/core/inspector/InspectorOverlayPage.html
@@ -407,6 +407,7 @@
 .element-description {
     flex: 1 1;
     word-wrap: break-word;
+    word-break: break-all;
 }
 
 .dimensions {
@@ -752,7 +753,7 @@
     var boxY = bounds.minY - arrowRadius - titleHeight;
     var onTop = true;
     if (boxY < 0) {
-        boxY = bounds.maxY + arrowRadius;
+        boxY = Math.min(canvasHeight - titleHeight, bounds.maxY + arrowRadius);
         onTop = false;
     } else if (bounds.minY > canvasHeight) {
         boxY = canvasHeight - arrowRadius - titleHeight;
diff --git a/third_party/WebKit/Source/core/layout/HitTestResult.cpp b/third_party/WebKit/Source/core/layout/HitTestResult.cpp
index 7a4c2bc..f568e2ba 100644
--- a/third_party/WebKit/Source/core/layout/HitTestResult.cpp
+++ b/third_party/WebKit/Source/core/layout/HitTestResult.cpp
@@ -23,7 +23,7 @@
 
 #include "core/HTMLNames.h"
 #include "core/dom/PseudoElement.h"
-#include "core/dom/shadow/ComposedTreeTraversal.h"
+#include "core/dom/shadow/FlatTreeTraversal.h"
 #include "core/dom/shadow/ShadowRoot.h"
 #include "core/editing/FrameSelection.h"
 #include "core/editing/VisibleUnits.h"
@@ -275,7 +275,7 @@
     // For <area> tags in image maps, walk the tree for the <area>, not the <img> using it.
     if (m_innerNode.get())
         m_innerNode->updateDistribution();
-    for (Node* titleNode = m_innerNode.get(); titleNode; titleNode = ComposedTreeTraversal::parent(*titleNode)) {
+    for (Node* titleNode = m_innerNode.get(); titleNode; titleNode = FlatTreeTraversal::parent(*titleNode)) {
         if (titleNode->isElementNode()) {
             String title = toElement(titleNode)->title();
             if (!title.isNull()) {
@@ -522,7 +522,7 @@
 
 Element* HitTestResult::innerElement() const
 {
-    for (Node* node = m_innerNode.get(); node; node = ComposedTreeTraversal::parent(*node)) {
+    for (Node* node = m_innerNode.get(); node; node = FlatTreeTraversal::parent(*node)) {
         if (node->isElementNode())
             return toElement(node);
     }
diff --git a/third_party/WebKit/Source/core/layout/LayoutListItem.cpp b/third_party/WebKit/Source/core/layout/LayoutListItem.cpp
index 47711823..f29852ff 100644
--- a/third_party/WebKit/Source/core/layout/LayoutListItem.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutListItem.cpp
@@ -24,7 +24,7 @@
 #include "core/layout/LayoutListItem.h"
 
 #include "core/HTMLNames.h"
-#include "core/dom/shadow/ComposedTreeTraversal.h"
+#include "core/dom/shadow/FlatTreeTraversal.h"
 #include "core/html/HTMLOListElement.h"
 #include "core/layout/LayoutListMarker.h"
 #include "core/layout/LayoutView.h"
@@ -128,7 +128,7 @@
         return nullptr;
     Node* firstNode = nullptr;
     // We use parentNode because the enclosing list could be a ShadowRoot that's not Element.
-    for (Node* parent = ComposedTreeTraversal::parent(*listItemNode); parent; parent = ComposedTreeTraversal::parent(*parent)) {
+    for (Node* parent = FlatTreeTraversal::parent(*listItemNode); parent; parent = FlatTreeTraversal::parent(*parent)) {
         if (isList(*parent))
             return parent;
         if (!firstNode)
diff --git a/third_party/WebKit/Source/core/layout/LayoutSearchField.cpp b/third_party/WebKit/Source/core/layout/LayoutSearchField.cpp
index 764d30c..158a9b2 100644
--- a/third_party/WebKit/Source/core/layout/LayoutSearchField.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutSearchField.cpp
@@ -72,23 +72,4 @@
     return lineHeight + nonContentHeight;
 }
 
-LayoutUnit LayoutSearchField::computeLogicalHeightLimit() const
-{
-    return logicalHeight();
-}
-
-void LayoutSearchField::centerContainerIfNeeded(LayoutBox* containerLayoutObject) const
-{
-    if (!containerLayoutObject)
-        return;
-
-    if (containerLayoutObject->logicalHeight() <= contentLogicalHeight())
-        return;
-
-    // A quirk for find-in-page box on Safari Windows.
-    // http://webkit.org/b/63157
-    LayoutUnit logicalHeightDiff = containerLayoutObject->logicalHeight() - contentLogicalHeight();
-    containerLayoutObject->setLogicalTop(containerLayoutObject->logicalTop() - (logicalHeightDiff / 2 + layoutMod(logicalHeightDiff, 2)));
-}
-
 } // namespace blink
diff --git a/third_party/WebKit/Source/core/layout/LayoutSearchField.h b/third_party/WebKit/Source/core/layout/LayoutSearchField.h
index 0756180..399964a5 100644
--- a/third_party/WebKit/Source/core/layout/LayoutSearchField.h
+++ b/third_party/WebKit/Source/core/layout/LayoutSearchField.h
@@ -35,9 +35,7 @@
     ~LayoutSearchField() override;
 
 private:
-    void centerContainerIfNeeded(LayoutBox*) const override;
     LayoutUnit computeControlLogicalHeight(LayoutUnit lineHeight, LayoutUnit nonContentHeight) const override;
-    LayoutUnit computeLogicalHeightLimit() const override;
 
     Element* searchDecorationElement() const;
     Element* cancelButtonElement() const;
diff --git a/third_party/WebKit/Source/core/layout/LayoutTextControlSingleLine.cpp b/third_party/WebKit/Source/core/layout/LayoutTextControlSingleLine.cpp
index e5a2db8..ecc439b0 100644
--- a/third_party/WebKit/Source/core/layout/LayoutTextControlSingleLine.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutTextControlSingleLine.cpp
@@ -92,29 +92,11 @@
     }
 }
 
-LayoutUnit LayoutTextControlSingleLine::computeLogicalHeightLimit() const
-{
-    return containerElement() ? contentLogicalHeight() : logicalHeight();
-}
-
 void LayoutTextControlSingleLine::layout()
 {
     LayoutAnalyzer::Scope analyzer(*this);
     SubtreeLayoutScope layoutScope(*this);
 
-    // FIXME: This code is madness (https://crbug.com/461117)
-    // FIXME: We should remove the height-related hacks in layout() and
-    // styleDidChange(). We need them because
-    // - Center the inner elements vertically if the input height is taller than
-    //   the intrinsic height of the inner elements.
-    // - Shrink the inner elment heights if the input height is samller than the
-    //   intrinsic heights of the inner elements.
-    // The hack was removed for the inner-editor element.  We should remove it
-    // for containerElement() too.
-
-    // We don't honor paddings and borders for type=search if the text height is
-    // taller than the contentHeight() because of compatibility.
-
     LayoutBox* innerEditorLayoutObject = innerEditorElement()->layoutBox();
     bool innerEditorLayoutObjectHadLayout = innerEditorLayoutObject && innerEditorLayoutObject->needsLayout();
 
@@ -125,22 +107,6 @@
     Element* container = containerElement();
     LayoutBox* containerLayoutObject = container ? container->layoutBox() : 0;
 
-    LayoutUnit logicalHeightLimit = computeLogicalHeightLimit();
-    // The container might be taller because of decoration elements.
-    if (containerLayoutObject) {
-        containerLayoutObject->layoutIfNeeded();
-        LayoutUnit containerLogicalHeight = containerLayoutObject->logicalHeight();
-        if (containerLogicalHeight > logicalHeightLimit) {
-            containerLayoutObject->mutableStyleRef().setLogicalHeight(Length(logicalHeightLimit, Fixed));
-            layoutScope.setNeedsLayout(this, LayoutInvalidationReason::TextControlChanged);
-        } else if (containerLayoutObject->logicalHeight() < contentLogicalHeight()) {
-            containerLayoutObject->mutableStyleRef().setLogicalHeight(Length(contentLogicalHeight(), Fixed));
-            layoutScope.setNeedsLayout(this, LayoutInvalidationReason::TextControlChanged);
-        } else {
-            containerLayoutObject->mutableStyleRef().setLogicalHeight(Length(containerLogicalHeight, Fixed));
-        }
-    }
-
     // We ensure that the inner editor layoutObject is laid out at least once. This is
     // required as the logic below assumes that we don't carry over previous layout values.
     if (innerEditorLayoutObject && !innerEditorLayoutObjectHadLayout)
@@ -154,8 +120,9 @@
     if (!container && innerEditorLayoutObject && innerEditorLayoutObject->size().height() != contentLogicalHeight()) {
         LayoutUnit logicalHeightDiff = innerEditorLayoutObject->logicalHeight() - contentLogicalHeight();
         innerEditorLayoutObject->setLogicalTop(innerEditorLayoutObject->logicalTop() - (logicalHeightDiff / 2 + layoutMod(logicalHeightDiff, 2)));
-    } else {
-        centerContainerIfNeeded(containerLayoutObject);
+    } else if (container && containerLayoutObject && containerLayoutObject->size().height() != contentLogicalHeight()) {
+        LayoutUnit logicalHeightDiff = containerLayoutObject->logicalHeight() - contentLogicalHeight();
+        containerLayoutObject->setLogicalTop(containerLayoutObject->logicalTop() - (logicalHeightDiff / 2 + layoutMod(logicalHeightDiff, 2)));
     }
 
     HTMLElement* placeholderElement = inputElement()->placeholderElement();
@@ -219,14 +186,6 @@
 void LayoutTextControlSingleLine::styleDidChange(StyleDifference diff, const ComputedStyle* oldStyle)
 {
     LayoutTextControl::styleDidChange(diff, oldStyle);
-
-    // We may have set the width and the height in the old style in layout().
-    // Reset them now to avoid getting a spurious layout hint.
-    Element* container = containerElement();
-    if (LayoutObject* containerLayoutObject = container ? container->layoutObject() : 0) {
-        containerLayoutObject->mutableStyleRef().setHeight(Length());
-        containerLayoutObject->mutableStyleRef().setWidth(Length());
-    }
     if (HTMLElement* placeholder = inputElement()->placeholderElement())
         placeholder->setInlineStyleProperty(CSSPropertyTextOverflow, textShouldBeTruncated() ? CSSValueEllipsis : CSSValueClip);
     setHasOverflowClip(false);
diff --git a/third_party/WebKit/Source/core/layout/LayoutTextControlSingleLine.h b/third_party/WebKit/Source/core/layout/LayoutTextControlSingleLine.h
index a6bd518..b0a5e7b 100644
--- a/third_party/WebKit/Source/core/layout/LayoutTextControlSingleLine.h
+++ b/third_party/WebKit/Source/core/layout/LayoutTextControlSingleLine.h
@@ -40,8 +40,6 @@
     void capsLockStateMayHaveChanged();
 
 protected:
-    virtual void centerContainerIfNeeded(LayoutBox*) const { }
-    virtual LayoutUnit computeLogicalHeightLimit() const;
     Element* containerElement() const;
     Element* editingViewPortElement() const;
     HTMLInputElement* inputElement() const;
diff --git a/third_party/WebKit/Source/core/svg/graphics/SVGImage.cpp b/third_party/WebKit/Source/core/svg/graphics/SVGImage.cpp
index 8e54e313..3defaf5d3 100644
--- a/third_party/WebKit/Source/core/svg/graphics/SVGImage.cpp
+++ b/third_party/WebKit/Source/core/svg/graphics/SVGImage.cpp
@@ -29,7 +29,7 @@
 
 #include "core/animation/AnimationTimeline.h"
 #include "core/dom/NodeTraversal.h"
-#include "core/dom/shadow/ComposedTreeTraversal.h"
+#include "core/dom/shadow/FlatTreeTraversal.h"
 #include "core/frame/FrameView.h"
 #include "core/frame/LocalFrame.h"
 #include "core/frame/Settings.h"
@@ -110,7 +110,7 @@
 
     // Don't allow foreignObject elements or images that are not known to be
     // single-origin since these can leak cross-origin information.
-    for (Node* node = rootElement; node; node = ComposedTreeTraversal::next(*node)) {
+    for (Node* node = rootElement; node; node = FlatTreeTraversal::next(*node)) {
         if (isSVGForeignObjectElement(*node))
             return false;
         if (isSVGImageElement(*node)) {
diff --git a/third_party/WebKit/Source/core/testing/CoreTestPrinters.cpp b/third_party/WebKit/Source/core/testing/CoreTestPrinters.cpp
index 231cbce..60d56fa7 100644
--- a/third_party/WebKit/Source/core/testing/CoreTestPrinters.cpp
+++ b/third_party/WebKit/Source/core/testing/CoreTestPrinters.cpp
@@ -86,7 +86,7 @@
     return printPosition(ostream, position);
 }
 
-std::ostream& operator<<(std::ostream& ostream, const PositionInComposedTree& position)
+std::ostream& operator<<(std::ostream& ostream, const PositionInFlatTree& position)
 {
     return printPosition(ostream, position);
 }
diff --git a/third_party/WebKit/Source/core/testing/Internals.cpp b/third_party/WebKit/Source/core/testing/Internals.cpp
index 0b114421..d60efc7 100644
--- a/third_party/WebKit/Source/core/testing/Internals.cpp
+++ b/third_party/WebKit/Source/core/testing/Internals.cpp
@@ -59,8 +59,8 @@
 #include "core/dom/StyleEngine.h"
 #include "core/dom/TreeScope.h"
 #include "core/dom/ViewportDescription.h"
-#include "core/dom/shadow/ComposedTreeTraversal.h"
 #include "core/dom/shadow/ElementShadow.h"
+#include "core/dom/shadow/FlatTreeTraversal.h"
 #include "core/dom/shadow/SelectRuleFeatureSet.h"
 #include "core/dom/shadow/ShadowRoot.h"
 #include "core/editing/Editor.h"
@@ -592,54 +592,54 @@
     return toShadowRoot(root)->childShadowRootCount();
 }
 
-Node* Internals::nextSiblingInComposedTree(Node* node, ExceptionState& exceptionState)
+Node* Internals::nextSiblingInFlatTree(Node* node, ExceptionState& exceptionState)
 {
     ASSERT(node);
-    if (!node->canParticipateInComposedTree()) {
-        exceptionState.throwDOMException(InvalidAccessError, "The node argument doesn't particite in the composed tree.");
+    if (!node->canParticipateInFlatTree()) {
+        exceptionState.throwDOMException(InvalidAccessError, "The node argument doesn't particite in the flat tree.");
         return 0;
     }
-    return ComposedTreeTraversal::nextSibling(*node);
+    return FlatTreeTraversal::nextSibling(*node);
 }
 
-Node* Internals::firstChildInComposedTree(Node* node, ExceptionState& exceptionState)
+Node* Internals::firstChildInFlatTree(Node* node, ExceptionState& exceptionState)
 {
     ASSERT(node);
-    if (!node->canParticipateInComposedTree()) {
-        exceptionState.throwDOMException(InvalidAccessError, "The node argument doesn't particite in the composed tree");
+    if (!node->canParticipateInFlatTree()) {
+        exceptionState.throwDOMException(InvalidAccessError, "The node argument doesn't particite in the flat tree");
         return 0;
     }
-    return ComposedTreeTraversal::firstChild(*node);
+    return FlatTreeTraversal::firstChild(*node);
 }
 
-Node* Internals::lastChildInComposedTree(Node* node, ExceptionState& exceptionState)
+Node* Internals::lastChildInFlatTree(Node* node, ExceptionState& exceptionState)
 {
     ASSERT(node);
-    if (!node->canParticipateInComposedTree()) {
-        exceptionState.throwDOMException(InvalidAccessError, "The node argument doesn't particite in the composed tree.");
+    if (!node->canParticipateInFlatTree()) {
+        exceptionState.throwDOMException(InvalidAccessError, "The node argument doesn't particite in the flat tree.");
         return 0;
     }
-    return ComposedTreeTraversal::lastChild(*node);
+    return FlatTreeTraversal::lastChild(*node);
 }
 
-Node* Internals::nextInComposedTree(Node* node, ExceptionState& exceptionState)
+Node* Internals::nextInFlatTree(Node* node, ExceptionState& exceptionState)
 {
     ASSERT(node);
-    if (!node->canParticipateInComposedTree()) {
-        exceptionState.throwDOMException(InvalidAccessError, "The node argument doesn't particite in the composed tree.");
+    if (!node->canParticipateInFlatTree()) {
+        exceptionState.throwDOMException(InvalidAccessError, "The node argument doesn't particite in the flat tree.");
         return 0;
     }
-    return ComposedTreeTraversal::next(*node);
+    return FlatTreeTraversal::next(*node);
 }
 
-Node* Internals::previousInComposedTree(Node* node, ExceptionState& exceptionState)
+Node* Internals::previousInFlatTree(Node* node, ExceptionState& exceptionState)
 {
     ASSERT(node);
-    if (!node->canParticipateInComposedTree()) {
-        exceptionState.throwDOMException(InvalidAccessError, "The node argument doesn't particite in the composed tree.");
+    if (!node->canParticipateInFlatTree()) {
+        exceptionState.throwDOMException(InvalidAccessError, "The node argument doesn't particite in the flat tree.");
         return 0;
     }
-    return ComposedTreeTraversal::previous(*node);
+    return FlatTreeTraversal::previous(*node);
 }
 
 String Internals::elementLayoutTreeAsText(Element* element, ExceptionState& exceptionState)
diff --git a/third_party/WebKit/Source/core/testing/Internals.h b/third_party/WebKit/Source/core/testing/Internals.h
index 6d7144f..65de0437a 100644
--- a/third_party/WebKit/Source/core/testing/Internals.h
+++ b/third_party/WebKit/Source/core/testing/Internals.h
@@ -131,11 +131,11 @@
     bool hasSelectorForAttributeInShadow(Element* host, const AtomicString& attributeName, ExceptionState&);
     unsigned short compareTreeScopePosition(const Node*, const Node*, ExceptionState&) const;
 
-    Node* nextSiblingInComposedTree(Node*, ExceptionState&);
-    Node* firstChildInComposedTree(Node*, ExceptionState&);
-    Node* lastChildInComposedTree(Node*, ExceptionState&);
-    Node* nextInComposedTree(Node*, ExceptionState&);
-    Node* previousInComposedTree(Node*, ExceptionState&);
+    Node* nextSiblingInFlatTree(Node*, ExceptionState&);
+    Node* firstChildInFlatTree(Node*, ExceptionState&);
+    Node* lastChildInFlatTree(Node*, ExceptionState&);
+    Node* nextInFlatTree(Node*, ExceptionState&);
+    Node* previousInFlatTree(Node*, ExceptionState&);
 
     unsigned updateStyleAndReturnAffectedElementCount(ExceptionState&) const;
     unsigned needsLayoutCount(ExceptionState&) const;
diff --git a/third_party/WebKit/Source/core/testing/Internals.idl b/third_party/WebKit/Source/core/testing/Internals.idl
index 78ab9d9..65ec824 100644
--- a/third_party/WebKit/Source/core/testing/Internals.idl
+++ b/third_party/WebKit/Source/core/testing/Internals.idl
@@ -83,11 +83,11 @@
     // animation update for CSS and advance the SMIL timeline by one frame.
     [RaisesException] void advanceImageAnimation(Element image);
 
-    [RaisesException] Node nextSiblingInComposedTree(Node node);
-    [RaisesException] Node firstChildInComposedTree(Node node);
-    [RaisesException] Node lastChildInComposedTree(Node node);
-    [RaisesException] Node nextInComposedTree(Node node);
-    [RaisesException] Node previousInComposedTree(Node node);
+    [RaisesException] Node nextSiblingInFlatTree(Node node);
+    [RaisesException] Node firstChildInFlatTree(Node node);
+    [RaisesException] Node lastChildInFlatTree(Node node);
+    [RaisesException] Node nextInFlatTree(Node node);
+    [RaisesException] Node previousInFlatTree(Node node);
 
     DOMString visiblePlaceholder(Element element);
 
diff --git a/third_party/WebKit/Source/devtools/front_end/devtools.js b/third_party/WebKit/Source/devtools/front_end/devtools.js
index 643f939..9cb6bf2 100644
--- a/third_party/WebKit/Source/devtools/front_end/devtools.js
+++ b/third_party/WebKit/Source/devtools/front_end/devtools.js
@@ -1010,6 +1010,9 @@
     styleElement.type = "text/css";
     styleElement.textContent = "html /deep/ * { min-width: 0; min-height: 0; }";
     window.document.head.appendChild(styleElement);
+
+    // Support for legacy (<M49) frontends. Remove in M52.
+    Event.prototype.deepPath = undefined;
 }
 
 function windowLoaded()
diff --git a/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js b/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js
index 33a1673..2bc3e5f5 100644
--- a/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js
+++ b/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js
@@ -793,12 +793,12 @@
 
             var table = new WebInspector.SecurityDetailsTable();
             certificateSection.appendChild(table.element());
-            table.addRow("Subject", certificateDetails.subject.name);
-            table.addRow("SAN", sanDiv);
-            table.addRow("Valid From", validFromString);
-            table.addRow("Valid Until", validUntilString);
-            table.addRow("Issuer", certificateDetails.issuer);
-            table.addRow("SCTs", this.sctSummary(originState.securityDetails.certificateValidationDetails));
+            table.addRow(WebInspector.UIString("Subject"), certificateDetails.subject.name);
+            table.addRow(WebInspector.UIString("SAN"), sanDiv);
+            table.addRow(WebInspector.UIString("Valid From"), validFromString);
+            table.addRow(WebInspector.UIString("Valid Until"), validUntilString);
+            table.addRow(WebInspector.UIString("Issuer"), certificateDetails.issuer);
+            table.addRow(WebInspector.UIString("SCTs"), this.sctSummary(originState.securityDetails.certificateValidationDetails));
             table.addRow("", WebInspector.SecurityPanel.createCertificateViewerButton(WebInspector.UIString("Open full certificate details"), originState.securityDetails.certificateId));
         }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/Tooltip.js b/third_party/WebKit/Source/devtools/front_end/ui/Tooltip.js
index 0739889..26e24423 100644
--- a/third_party/WebKit/Source/devtools/front_end/ui/Tooltip.js
+++ b/third_party/WebKit/Source/devtools/front_end/ui/Tooltip.js
@@ -33,7 +33,7 @@
      */
     _mouseMove: function(event)
     {
-        var path = event.deepPath ? event.deepPath : event.path;
+        var path = event.path;
         if (!path || event.buttons !== 0)
             return;
 
diff --git a/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp b/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp
index e8a60d84..a2df0b7d 100644
--- a/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp
+++ b/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp
@@ -32,7 +32,7 @@
 #include "core/dom/Element.h"
 #include "core/dom/NodeTraversal.h"
 #include "core/dom/Text.h"
-#include "core/dom/shadow/ComposedTreeTraversal.h"
+#include "core/dom/shadow/FlatTreeTraversal.h"
 #include "core/html/HTMLDListElement.h"
 #include "core/html/HTMLFieldSetElement.h"
 #include "core/html/HTMLFrameElementBase.h"
@@ -332,7 +332,7 @@
         return DetailsRole;
 
     if (isHTMLSummaryElement(*node())) {
-        ContainerNode* parent = ComposedTreeTraversal::parent(*node());
+        ContainerNode* parent = FlatTreeTraversal::parent(*node());
         if (parent && isHTMLDetailsElement(parent))
             return DisclosureTriangleRole;
         return UnknownRole;
diff --git a/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp b/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp
index 2dbab3b..68bffa34 100644
--- a/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp
+++ b/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp
@@ -212,7 +212,19 @@
 
 bool MediaStreamTrack::hasPendingActivity() const
 {
-    return !m_stopped && hasEventListeners();
+    // If 'ended' listeners exist and the object hasn't yet reached
+    // that state, keep the object alive.
+    //
+    // An otherwise unreachable MediaStreamTrack object in an non-ended
+    // state will otherwise indirectly be transitioned to the 'ended' state
+    // while finalizing m_component. Which dispatches an 'ended' event,
+    // referring to this object as the target. If this object is then GCed
+    // at the same time, v8 objects will retain (wrapper) references to
+    // this dead MediaStreamTrack object. Bad.
+    //
+    // Hence insisting on keeping this object alive until the 'ended'
+    // state has been reached & handled.
+    return !ended() && hasEventListeners(EventTypeNames::ended);
 }
 
 PassOwnPtr<AudioSourceProvider> MediaStreamTrack::createWebAudioSource()
diff --git a/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in b/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in
index ff8c314..b23b29f 100644
--- a/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in
+++ b/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in
@@ -162,7 +162,7 @@
 // Implements documentElement.scrollTop/Left and bodyElement.scrollTop/Left
 // as per the spec, matching other Web engines.
 ScrollTopLeftInterop status=experimental
-SelectionForComposedTree status=stable
+SelectionForFlatTree status=stable
 ServiceWorkerClientAttributes status=stable
 ServiceWorkerExtendableMessageEvent status=experimental
 ServiceWorkerPerformanceTimeline status=stable
diff --git a/third_party/WebKit/Source/platform/heap/PersistentNode.h b/third_party/WebKit/Source/platform/heap/PersistentNode.h
index 5fb806f8..62d176d 100644
--- a/third_party/WebKit/Source/platform/heap/PersistentNode.h
+++ b/third_party/WebKit/Source/platform/heap/PersistentNode.h
@@ -26,6 +26,7 @@
         ASSERT(isUnused());
     }
 
+#if ENABLE(ASSERT)
     ~PersistentNode()
     {
         // If you hit this assert, it means that the thread finished
@@ -34,8 +35,9 @@
         // main thread finishes without clearing all persistent handles.
         ASSERT(isMainThread() || isUnused());
     }
+#endif
 
-    // It is dangrous to copy the PersistentNode because it breaks the
+    // It is dangerous to copy the PersistentNode because it breaks the
     // free list.
     PersistentNode& operator=(const PersistentNode& otherref) = delete;
 
diff --git a/third_party/WebKit/Source/web/TextFinder.cpp b/third_party/WebKit/Source/web/TextFinder.cpp
index 08f7445..c87f34bd 100644
--- a/third_party/WebKit/Source/web/TextFinder.cpp
+++ b/third_party/WebKit/Source/web/TextFinder.cpp
@@ -399,8 +399,8 @@
 
 void TextFinder::scopeStringMatches(int identifier, const WebString& searchText, const WebFindOptions& options, bool reset)
 {
-    if (RuntimeEnabledFeatures::selectionForComposedTreeEnabled())
-        return scopeStringMatchesAlgorithm<EditingInComposedTreeStrategy>(identifier, searchText, options, reset);
+    if (RuntimeEnabledFeatures::selectionForFlatTreeEnabled())
+        return scopeStringMatchesAlgorithm<EditingInFlatTreeStrategy>(identifier, searchText, options, reset);
     scopeStringMatchesAlgorithm<EditingStrategy>(identifier, searchText, options, reset);
 }
 
diff --git a/third_party/WebKit/Source/web/TextFinder.h b/third_party/WebKit/Source/web/TextFinder.h
index 1f48460..e639c9716 100644
--- a/third_party/WebKit/Source/web/TextFinder.h
+++ b/third_party/WebKit/Source/web/TextFinder.h
@@ -132,7 +132,7 @@
     int nearestFindMatch(const FloatPoint&, float& distanceSquared);
 
     // TODO(yosin) Templataization of |scopeStringMatchesAlgorithm| will be
-    // gone once |RuntimeEnabledFeatures::selectionForComposedTreeEnabled| is
+    // gone once |RuntimeEnabledFeatures::selectionForFlatTreeEnabled| is
     // removed.
     template <typename Strategy>
     void scopeStringMatchesAlgorithm(
diff --git a/third_party/WebKit/Source/web/WebAXObject.cpp b/third_party/WebKit/Source/web/WebAXObject.cpp
index 3d73721c..9d8e9c6 100644
--- a/third_party/WebKit/Source/web/WebAXObject.cpp
+++ b/third_party/WebKit/Source/web/WebAXObject.cpp
@@ -932,7 +932,7 @@
         element = toElement(node);
     } else {
         node->updateDistribution();
-        ContainerNode* parent = ComposedTreeTraversal::parent(*node);
+        ContainerNode* parent = FlatTreeTraversal::parent(*node);
         ASSERT_WITH_SECURITY_IMPLICATION(parent->isElementNode());
         element = toElement(parent);
     }
diff --git a/third_party/WebKit/Source/web/WebViewImpl.cpp b/third_party/WebKit/Source/web/WebViewImpl.cpp
index dec2d18..62c8d38 100644
--- a/third_party/WebKit/Source/web/WebViewImpl.cpp
+++ b/third_party/WebKit/Source/web/WebViewImpl.cpp
@@ -1186,7 +1186,7 @@
         return WebRect();
 
     // Find the block type node based on the hit node.
-    // FIXME: This wants to walk composed tree with LayoutTreeBuilderTraversal::parent().
+    // FIXME: This wants to walk flat tree with LayoutTreeBuilderTraversal::parent().
     while (node && (!node->layoutObject() || node->layoutObject()->isInline()))
         node = LayoutTreeBuilderTraversal::parent(*node);
 
diff --git a/third_party/WebKit/Source/web/tests/TextFinderTest.cpp b/third_party/WebKit/Source/web/tests/TextFinderTest.cpp
index dc79c9f7..a3ec1cc 100644
--- a/third_party/WebKit/Source/web/tests/TextFinderTest.cpp
+++ b/third_party/WebKit/Source/web/tests/TextFinderTest.cpp
@@ -198,7 +198,7 @@
     bool wrapWithinFrame = true;
     WebRect* selectionRect = nullptr;
 
-    // TextIterator currently returns the matches in the composed treeorder, so
+    // TextIterator currently returns the matches in the flat treeorder, so
     // in this case the matches will be returned in the order of
     // <i> -> <u> -> <b>.
     ASSERT_TRUE(textFinder().find(identifier, searchText, findOptions, wrapWithinFrame, selectionRect));
@@ -315,7 +315,7 @@
     while (textFinder().scopingInProgress())
         runPendingTasks();
 
-    // TextIterator currently returns the matches in the composed tree order,
+    // TextIterator currently returns the matches in the flat tree order,
     // so in this case the matches will be returned in the order of
     // <i> -> <u> -> <b>.
     EXPECT_EQ(3, textFinder().totalMatchCount());
diff --git a/third_party/WebKit/public/platform/Platform.h b/third_party/WebKit/public/platform/Platform.h
index fd54a75b..17b96ef 100644
--- a/third_party/WebKit/public/platform/Platform.h
+++ b/third_party/WebKit/public/platform/Platform.h
@@ -259,22 +259,9 @@
         return WebString();
     }
 
-    // Memory --------------------------------------------------------------
-
-    // Returns the current space allocated for the pagefile, in MB.
-    // That is committed size for Windows and virtual memory size for POSIX
-    virtual size_t memoryUsageMB() { return 0; }
-
     // Same as above, but always returns actual value, without any caches.
     virtual size_t actualMemoryUsageMB() { return 0; }
 
-    // Return the physical memory of the current machine, in MB.
-    virtual size_t physicalMemoryMB() { return 0; }
-
-    // Return the available virtual memory of the current machine, in MB. Or
-    // zero, if there is no limit.
-    virtual size_t virtualMemoryLimitMB() { return 0; }
-
     // Return the number of of processors of the current machine.
     virtual size_t numberOfProcessors() { return 0; }
 
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 36a873f..f03c9ef 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -76986,7 +76986,6 @@
   <int value="6" label="NETWORK_ERROR"/>
   <int value="7" label="HTTP_ERROR"/>
   <int value="8" label="BACKOFF_ERROR"/>
-  <int value="9" label="MIN_WAIT_DURATION_ERROR"/>
 </enum>
 
 <enum name="SB2InterstitialAction" type="int">
diff --git a/ui/views/window/dialog_delegate_unittest.cc b/ui/views/window/dialog_delegate_unittest.cc
index 6050da1..c41d58b 100644
--- a/ui/views/window/dialog_delegate_unittest.cc
+++ b/ui/views/window/dialog_delegate_unittest.cc
@@ -18,6 +18,10 @@
 #include "ui/views/window/dialog_client_view.h"
 #include "ui/views/window/dialog_delegate.h"
 
+#if defined(OS_MACOSX)
+#include "ui/base/test/scoped_fake_nswindow_focus.h"
+#endif
+
 namespace views {
 
 namespace {
@@ -119,6 +123,12 @@
  private:
   TestDialog* dialog_;
 
+#if defined(OS_MACOSX)
+  // Causes Widget::Show() to transfer focus synchronously and become immune to
+  // losing focus to processes running in parallel.
+  ui::test::ScopedFakeNSWindowFocus fake_focus;
+#endif
+
   DISALLOW_COPY_AND_ASSIGN(DialogTest);
 };