diff --git a/base/BUILD.gn b/base/BUILD.gn
index be5d5ef..833d611 100644
--- a/base/BUILD.gn
+++ b/base/BUILD.gn
@@ -38,9 +38,9 @@
   override_build_date = "N/A"
 
   # Turn on memory profiling in the task profiler when the heap shim is
-  # available, except for official builds for now.
-  enable_memory_task_profiler =
-      use_experimental_allocator_shim && (!is_official_build || is_syzyasan)
+  # available. Profiling can then be enabled at runtime by passing the command
+  # line flag --enable-heap-profiling=task-profiler.
+  enable_memory_task_profiler = use_experimental_allocator_shim
 
   # Partition alloc is included by default except iOS.
   use_partition_alloc = !is_ios
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/FullScreenActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/FullScreenActivity.java
index fc86d8d..f020212 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/FullScreenActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/FullScreenActivity.java
@@ -200,6 +200,9 @@
     @Override
     protected boolean handleBackPressed() {
         if (mTab == null) return false;
+
+        if (exitFullscreenIfShowing()) return true;
+
         if (mTab.canGoBack()) {
             mTab.goBack();
             return true;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java
index 4a36b3d..2bdb9a1 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java
@@ -9,12 +9,14 @@
 import android.graphics.Color;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.StrictMode;
 import android.os.SystemClock;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.view.View.OnSystemUiVisibilityChangeListener;
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
@@ -30,6 +32,7 @@
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.TabState;
 import org.chromium.chrome.browser.document.DocumentUtils;
+import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager;
 import org.chromium.chrome.browser.metrics.WebappUma;
 import org.chromium.chrome.browser.tab.EmptyTabObserver;
 import org.chromium.chrome.browser.tab.Tab;
@@ -54,6 +57,16 @@
     private static final String TAG = "WebappActivity";
     private static final long MS_BEFORE_NAVIGATING_BACK_FROM_INTERSTITIAL = 1000;
 
+    private static final int ENTER_IMMERSIVE_MODE_DELAY_MILLIS = 300;
+    private static final int RESTORE_IMMERSIVE_MODE_DELAY_MILLIS = 3000;
+    private static final int IMMERSIVE_MODE_UI_FLAGS = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
+            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
+            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
+            | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
+            | View.SYSTEM_UI_FLAG_LOW_PROFILE
+            | View.SYSTEM_UI_FLAG_IMMERSIVE;
+
     private final WebappDirectoryManager mDirectoryManager;
 
     protected WebappInfo mWebappInfo;
@@ -68,6 +81,8 @@
 
     private Bitmap mLargestFavicon;
 
+    private Runnable mSetImmersiveRunnable;
+
     /**
      * Construct all the variables that shouldn't change.  We do it here both to clarify when the
      * objects are created and to ensure that they exist throughout the parallelized initialization
@@ -92,8 +107,6 @@
             mWebappInfo = newWebappInfo;
             resetSavedInstanceState();
             if (mIsInitialized) initializeUI(null);
-            // TODO(dominickn): send the web app into fullscreen if mDisplayMode is
-            // WebDisplayMode.Fullscreen. See crbug.com/581522
         }
     }
 
@@ -118,9 +131,10 @@
 
         getActivityTab().addObserver(createTabObserver());
         getActivityTab().getTabWebContentsDelegateAndroid().setDisplayMode(
-                WebDisplayMode.Standalone);
-        // TODO(dominickn): send the web app into fullscreen if mDisplayMode is
-        // WebDisplayMode.Fullscreen. See crbug.com/581522
+                mWebappInfo.displayMode());
+        if (mWebappInfo.displayMode() == WebDisplayMode.Fullscreen) {
+            enterImmersiveMode();
+        }
     }
 
     @Override
@@ -203,6 +217,65 @@
     }
 
     @Override
+    public void onWindowFocusChanged(boolean hasFocus) {
+        super.onWindowFocusChanged(hasFocus);
+
+        // Re-enter immersive mode after users switch back to this Activity.
+        if (hasFocus) {
+            asyncSetImmersive(ENTER_IMMERSIVE_MODE_DELAY_MILLIS);
+        }
+    }
+
+    /**
+     * Sets activity's decor view into an immersive mode.
+     * If immersive mode is not supported, this method no-ops.
+     */
+    private void enterImmersiveMode() {
+        // Immersive mode is only supported in API 19+.
+        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return;
+
+        if (mSetImmersiveRunnable == null) {
+
+            final View decor = getWindow().getDecorView();
+
+            mSetImmersiveRunnable = new Runnable() {
+                @Override
+                public void run() {
+                    int currentFlags = decor.getSystemUiVisibility();
+                    int desiredFlags = currentFlags | IMMERSIVE_MODE_UI_FLAGS;
+                    if (currentFlags != desiredFlags) {
+                        decor.setSystemUiVisibility(desiredFlags);
+                    }
+                }
+            };
+
+            // When we enter immersive mode for the first time, register a
+            // SystemUiVisibilityChangeListener that restores immersive mode. This is necessary
+            // because user actions like focusing a keyboard will break out of immersive mode.
+            decor.setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener() {
+                @Override
+                public void onSystemUiVisibilityChange(int newFlags) {
+                    if ((newFlags & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
+                        asyncSetImmersive(RESTORE_IMMERSIVE_MODE_DELAY_MILLIS);
+                    }
+                }
+            });
+        }
+
+        asyncSetImmersive(ENTER_IMMERSIVE_MODE_DELAY_MILLIS);
+    }
+
+    /**
+     * This method no-ops before {@link enterImmersiveMode()) is called explicitly.
+     */
+    private void asyncSetImmersive(int delayInMills) {
+        if (mSetImmersiveRunnable == null) return;
+
+        mHandler.removeCallbacks(mSetImmersiveRunnable);
+        mHandler.postDelayed(mSetImmersiveRunnable, delayInMills);
+    }
+
+    @Override
     public void onResume() {
         if (!isFinishing()) {
             if (getIntent() != null) {
@@ -372,6 +445,24 @@
                 getActivityTab().getUrl(), getWebappInfo().uri().toString(), true);
     }
 
+    @Override
+    protected ChromeFullscreenManager createFullscreenManager() {
+        // Disable HTML5 fullscreen in PWA fullscreen mode.
+        return new ChromeFullscreenManager(this, false) {
+            @Override
+            public void setPersistentFullscreenMode(boolean enabled) {
+                if (mWebappInfo.displayMode() == WebDisplayMode.Fullscreen) return;
+                super.setPersistentFullscreenMode(enabled);
+            }
+
+            @Override
+            public boolean getPersistentFullscreenMode() {
+                if (mWebappInfo.displayMode() == WebDisplayMode.Fullscreen) return false;
+                return super.getPersistentFullscreenMode();
+            }
+        };
+    }
+
     protected TabObserver createTabObserver() {
         return new EmptyTabObserver() {
 
diff --git a/net/nqe/network_quality_estimator.cc b/net/nqe/network_quality_estimator.cc
index 7adb2ac2..aacd7e9 100644
--- a/net/nqe/network_quality_estimator.cc
+++ b/net/nqe/network_quality_estimator.cc
@@ -411,7 +411,7 @@
     base::TimeTicks now = tick_clock_->NowTicks();
     last_main_frame_request_ = now;
 
-    ComputeEffectiveConnectionType();
+    MaybeComputeEffectiveConnectionType();
     effective_connection_type_at_last_main_frame_ = effective_connection_type_;
     estimated_quality_at_last_main_frame_ = network_quality_;
 
@@ -443,6 +443,7 @@
   }
 
   if (request.load_flags() & LOAD_MAIN_FRAME_DEPRECATED) {
+    ComputeEffectiveConnectionType();
     RecordMetricsOnMainFrameRequest();
     MaybeQueryExternalEstimateProvider();
   }
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index 29fb06f..0b8ce17 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -118,17 +118,6 @@
 crbug.com/683339 paint/invalidation/paged-with-overflowing-block-rl.html [ Failure ]
 crbug.com/683339 virtual/disable-spinvalidation/paint/invalidation/paged-with-overflowing-block-rl.html [ Failure ]
 
-
-crbug.com/693510 compositing/overlap-blending/reflection-opacity-huge.html [ NeedsManualRebaseline ]
-crbug.com/693510 compositing/reflections/animation-inside-reflection.html [ NeedsManualRebaseline ]
-crbug.com/693510 compositing/reflections/deeply-nested-reflections.html [ NeedsManualRebaseline ]
-crbug.com/693510 compositing/reflections/load-video-in-reflection.html [ NeedsManualRebaseline ]
-crbug.com/693510 compositing/reflections/nested-reflection-anchor-point.html [ NeedsManualRebaseline ]
-crbug.com/693510 compositing/reflections/nested-reflection-animated.html [ NeedsManualRebaseline ]
-crbug.com/693510 compositing/reflections/nested-reflection-mask-change.html [ NeedsManualRebaseline ]
-crbug.com/693510 compositing/reflections/nested-reflection-opacity.html [ NeedsManualRebaseline ]
-crbug.com/693510 media/video-layer-crash.html [ NeedsManualRebaseline ]
-
 crbug.com/646010 paint/selection/text-selection-newline-rtl-double-linebreak.html [ Failure ]
 crbug.com/646015 paint/invalidation/hover-invalidation-table.html [ Failure ]
 crbug.com/646015 virtual/disable-spinvalidation/paint/invalidation/hover-invalidation-table.html [ Failure ]
diff --git a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-htb-in-vlr-002-expected.xht b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-htb-in-vlr-002-expected.xht
new file mode 100644
index 0000000..5735d65
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-htb-in-vlr-002-expected.xht
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+ <head>
+
+  <title>CSS Reftest Reference</title>
+
+  <meta name="DC.date.created" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+  <meta name="DC.date.modified" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
+
+  <meta content="" name="flags" />
+
+  <style type="text/css"><![CDATA[
+  html
+    {
+      writing-mode: vertical-lr;
+    }
+
+  div#vertical-parent
+    {
+      border: orange solid 8px;
+      font-size: 32px;
+      line-height: 1.25; /* computes to 40px */
+    }
+
+  div#orthog-horiz
+    {
+      background-color: blue;
+      color: white;
+      left: 16px;
+      position: absolute;
+      writing-mode: horizontal-tb;
+    }
+
+  span
+    {
+      position: relative;
+      top: 40px;
+    }
+  ]]></style>
+
+ </head>
+
+ <body>
+
+  <div id="vertical-parent">
+    <div id="orthog-horiz">HTB floated left</div>
+    <span>VLR parent</span>
+  </div>
+
+ </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-htb-in-vlr-002.xht b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-htb-in-vlr-002.xht
new file mode 100644
index 0000000..690dc78
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-htb-in-vlr-002.xht
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+ <head>
+
+  <title>CSS Writing Modes Test: orthogonal floated left in vertical-lr context</title>
+
+  <meta name="DC.date.created" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+  <meta name="DC.date.modified" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+
+  <!--
+  Inspired by the test in
+  http://lists.w3.org/Archives/Public/www-style/2016Nov/0044.html
+  -->
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
+  <link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#auto-multicol" title="7.3.2 Auto-sizing Block Containers in Orthogonal Flows" />
+  <link rel="match" href="float-lft-orthog-htb-in-vlr-002-ref.xht" />
+
+  <meta content="" name="flags" />
+  <meta content="This test checks the horizontal position of an orthogonal floated left block box inside a vertical-lr parent. The orthogonal floated left block box must be put as far to the left as possible inside the vertical-lr line box." name="assert" />
+
+  <style type="text/css"><![CDATA[
+  html
+    {
+      writing-mode: vertical-lr;
+    }
+
+  div#vertical-parent
+    {
+      border: orange solid 8px;
+      font-size: 32px;
+      line-height: 1.25; /* computes to 40px */
+    }
+
+  div#orthog-htb-float-left
+    {
+      background-color: blue;
+      color: white;
+      float: left;
+      writing-mode: horizontal-tb;
+    }
+  ]]></style>
+
+ </head>
+
+ <body>
+
+  <div id="vertical-parent">VLR parent
+    <div id="orthog-htb-float-left">HTB floated left</div>
+  </div>
+
+ </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-htb-in-vrl-002-expected.xht b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-htb-in-vrl-002-expected.xht
new file mode 100644
index 0000000..7147ad1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-htb-in-vrl-002-expected.xht
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+ <head>
+
+  <title>CSS Reftest Reference</title>
+
+  <meta name="DC.date.created" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+  <meta name="DC.date.modified" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
+
+  <meta content="" name="flags" />
+
+  <style type="text/css"><![CDATA[
+  html
+    {
+      writing-mode: vertical-rl;
+    }
+
+  div#vertical-parent
+    {
+      border: orange solid 8px;
+      font-size: 32px;
+      line-height: 1.25; /* computes to 40px */
+    }
+
+  div#orthog-horiz
+    {
+      background-color: blue;
+      color: white;
+      right: 16px;
+      position: absolute;
+      writing-mode: horizontal-tb;
+    }
+
+  span
+    {
+      position: relative;
+      top: 40px;
+    }
+  ]]></style>
+
+ </head>
+
+ <body>
+
+  <div id="vertical-parent">
+    <div id="orthog-horiz">HTB floated left</div>
+    <span>VRL parent</span>
+  </div>
+
+ </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-htb-in-vrl-002.xht b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-htb-in-vrl-002.xht
new file mode 100644
index 0000000..d11a2f9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-htb-in-vrl-002.xht
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+ <head>
+
+  <title>CSS Writing Modes Test: orthogonal floated left in vertical-rl context</title>
+
+  <meta name="DC.date.created" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+  <meta name="DC.date.modified" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+
+  <!--
+  Inspired by the test in
+  http://lists.w3.org/Archives/Public/www-style/2016Nov/0044.html
+  -->
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
+  <link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#auto-multicol" title="7.3.2 Auto-sizing Block Containers in Orthogonal Flows" />
+  <link rel="match" href="float-lft-orthog-htb-in-vrl-002-ref.xht" />
+
+  <meta content="" name="flags" />
+  <meta content="This test checks the horizontal position of an orthogonal floated left block box inside an vertical-rl parent. The orthogonal floated left block box must be put as far to the right as possible inside the vertical-rl line box." name="assert" />
+
+  <style type="text/css"><![CDATA[
+  html
+    {
+      writing-mode: vertical-rl;
+    }
+
+  div#vertical-parent
+    {
+      border: orange solid 8px;
+      font-size: 32px;
+      line-height: 1.25; /* computes to 40px */
+    }
+
+  div#orthog-htb-float-left
+    {
+      background-color: blue;
+      color: white;
+      float: left;
+      writing-mode: horizontal-tb;
+    }
+  ]]></style>
+
+ </head>
+
+ <body>
+
+  <div id="vertical-parent">VRL parent
+    <div id="orthog-htb-float-left">HTB floated left</div>
+  </div>
+
+ </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vrl-002-expected.xht b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vlr-in-htb-002-expected.xht
similarity index 61%
copy from third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vrl-002-expected.xht
copy to third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vlr-in-htb-002-expected.xht
index 3fbf2e1..f6776a0 100644
--- a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vrl-002-expected.xht
+++ b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vlr-in-htb-002-expected.xht
@@ -6,10 +6,8 @@
 
   <title>CSS Reftest Reference</title>
 
-  <meta name="DC.date.created" content="2016-12-14T09:54:03+11:00" scheme=
-  "W3CDTF" />
-  <meta name="DC.date.modified" content="2017-02-04T09:54:03+11:00" scheme=
-  "W3CDTF" />
+  <meta name="DC.date.created" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+  <meta name="DC.date.modified" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
 
   <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
 
@@ -18,23 +16,23 @@
   <style type="text/css"><![CDATA[
   div#horiz-parent
     {
-      border: orange solid 3px;
-      font-size: 16px;
-      line-height: 1.25;
+      border: orange solid 8px;
+      font-size: 32px;
+      line-height: 1.25; /* computes to 40px */
     }
 
   div#orthog-vert
     {
       background-color: blue;
       color: white;
-      left: 11px;
+      left: 16px;
       position: absolute;
-      writing-mode: vertical-rl;
+      writing-mode: vertical-lr;
     }
 
   span
     {
-      left: 20px;
+      left: 40px;
       position: relative;
     }
   ]]></style>
@@ -44,8 +42,8 @@
  <body>
 
   <div id="horiz-parent">
-    <div id="orthog-vert">vertical-rl floated left</div>
-    <span>horizontal-tb parent</span>
+    <div id="orthog-vert">VLR floated left</div>
+    <span>HTB parent</span>
   </div>
 
  </body>
diff --git a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vlr-in-htb-002.xht b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vlr-in-htb-002.xht
new file mode 100644
index 0000000..d760b49
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vlr-in-htb-002.xht
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+ <head>
+
+  <title>CSS Writing Modes Test: orthogonal floated left in horizontal-tb context</title>
+
+  <meta name="DC.date.created" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+  <meta name="DC.date.modified" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+
+  <!--
+  Inspired by the test in
+  http://lists.w3.org/Archives/Public/www-style/2016Nov/0044.html
+  -->
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
+  <link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#auto-multicol" title="7.3.2 Auto-sizing Block Containers in Orthogonal Flows" />
+  <link rel="match" href="float-lft-orthog-vlr-in-htb-002-ref.xht" />
+
+  <meta content="" name="flags" />
+  <meta content="This test checks the vertical position of an orthogonal floated left block box inside an horizontal-tb parent. The orthogonal floated left block box must be put as high as possible inside the horizontal-tb line box." name="assert" />
+
+  <style type="text/css"><![CDATA[
+  div#horiz-parent
+    {
+      border: orange solid 8px;
+      font-size: 32px;
+      line-height: 1.25; /* computes to 40px */
+    }
+
+  div#orthog-vlr-float-left
+    {
+      background-color: blue;
+      color: white;
+      float: left;
+      writing-mode: vertical-lr;
+    }
+  ]]></style>
+
+ </head>
+
+ <body>
+
+  <div id="horiz-parent">HTB parent
+    <div id="orthog-vlr-float-left">VLR floated left</div>
+  </div>
+
+ </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vrl-002.xht b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vrl-002.xht
deleted file mode 100644
index ccc62af..0000000
--- a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vrl-002.xht
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-
- <head>
-
-  <title>CSS Writing Modes Test: floated left in vertical-rl orthogonal context</title>
-
-  <meta name="DC.date.created" content="2016-11-08T09:54:03+11:00" scheme=
-  "W3CDTF" />
-  <meta name="DC.date.modified" content="2017-02-04T09:54:03+11:00" scheme=
-  "W3CDTF" />
-
-  <!--
-  Inspired by the test in
-  http://lists.w3.org/Archives/Public/www-style/2016Nov/0044.html
-  -->
-
-  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
-  <link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#auto-multicol" title="7.3.2 Auto-sizing Block Containers in Orthogonal Flows" />
-  <link rel="match" href="float-lft-orthog-vrl-002-ref.xht" />
-
-  <meta content="" name="flags" />
-  <meta content="This test checks that the vertical placement of an orthogonal floated left block box inside an horizontal-tb parent. The orthogonal floated left block box should be located as high as possible inside the horizontal-tb line box." name="assert" />
-
-  <style type="text/css"><![CDATA[
-  div#horiz-parent
-    {
-      border: orange solid 3px;
-      font-size: 16px;
-      line-height: 1.25;
-    }
-
-  div#orthog-vrl-float-left
-    {
-      background-color: blue;
-      color: white;
-      float: left;
-      writing-mode: vertical-rl;
-    }
-  ]]></style>
-
- </head>
-
- <body>
-
-  <div id="horiz-parent">horizontal-tb parent
-    <div id="orthog-vrl-float-left">vertical-rl floated left</div>
-  </div>
-
- </body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vrl-002-expected.xht b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vrl-in-htb-002-expected.xht
similarity index 69%
rename from third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vrl-002-expected.xht
rename to third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vrl-in-htb-002-expected.xht
index 3fbf2e1..5b305e8 100644
--- a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vrl-002-expected.xht
+++ b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vrl-in-htb-002-expected.xht
@@ -6,10 +6,8 @@
 
   <title>CSS Reftest Reference</title>
 
-  <meta name="DC.date.created" content="2016-12-14T09:54:03+11:00" scheme=
-  "W3CDTF" />
-  <meta name="DC.date.modified" content="2017-02-04T09:54:03+11:00" scheme=
-  "W3CDTF" />
+  <meta name="DC.date.created" content="2016-12-14T09:54:03+11:00" scheme="W3CDTF" />
+  <meta name="DC.date.modified" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
 
   <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
 
@@ -18,23 +16,23 @@
   <style type="text/css"><![CDATA[
   div#horiz-parent
     {
-      border: orange solid 3px;
-      font-size: 16px;
-      line-height: 1.25;
+      border: orange solid 8px;
+      font-size: 32px;
+      line-height: 1.25; /* computes to 40px */
     }
 
   div#orthog-vert
     {
       background-color: blue;
       color: white;
-      left: 11px;
+      left: 16px;
       position: absolute;
       writing-mode: vertical-rl;
     }
 
   span
     {
-      left: 20px;
+      left: 40px;
       position: relative;
     }
   ]]></style>
@@ -44,8 +42,8 @@
  <body>
 
   <div id="horiz-parent">
-    <div id="orthog-vert">vertical-rl floated left</div>
-    <span>horizontal-tb parent</span>
+    <div id="orthog-vert">VRL floated left</div>
+    <span>HTB parent</span>
   </div>
 
  </body>
diff --git a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vrl-in-htb-002.xht b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vrl-in-htb-002.xht
new file mode 100644
index 0000000..ac4462c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-lft-orthog-vrl-in-htb-002.xht
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+ <head>
+
+  <title>CSS Writing Modes Test: orthogonal floated left in horizontal-tb context</title>
+
+  <meta name="DC.date.created" content="2016-11-08T09:54:03+11:00" scheme="W3CDTF" />
+  <meta name="DC.date.modified" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+
+  <!--
+  Inspired by the test in
+  http://lists.w3.org/Archives/Public/www-style/2016Nov/0044.html
+  -->
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
+  <link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#auto-multicol" title="7.3.2 Auto-sizing Block Containers in Orthogonal Flows" />
+  <link rel="match" href="float-lft-orthog-vrl-in-htb-002-ref.xht" />
+
+  <meta content="" name="flags" />
+  <meta content="This test checks the vertical position of an orthogonal floated left block box inside an horizontal-tb parent. The orthogonal floated left block box must be put as high as possible inside the horizontal-tb line box." name="assert" />
+
+  <style type="text/css"><![CDATA[
+  div#horiz-parent
+    {
+      border: orange solid 8px;
+      font-size: 32px;
+      line-height: 1.25; /* computes to 40px */
+    }
+
+  div#orthog-vrl-float-left
+    {
+      background-color: blue;
+      color: white;
+      float: left;
+      writing-mode: vertical-rl;
+    }
+  ]]></style>
+
+ </head>
+
+ <body>
+
+  <div id="horiz-parent">HTB parent
+    <div id="orthog-vrl-float-left">VRL floated left</div>
+  </div>
+
+ </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-htb-in-vlr-003-expected.xht b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-htb-in-vlr-003-expected.xht
new file mode 100644
index 0000000..1a27722b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-htb-in-vlr-003-expected.xht
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+ <head>
+
+  <title>CSS Reftest Reference</title>
+
+  <meta name="DC.date.created" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+  <meta name="DC.date.modified" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
+
+  <meta content="" name="flags" />
+
+  <style type="text/css"><![CDATA[
+  html
+    {
+      writing-mode: vertical-lr;
+    }
+
+  div#vertical-parent
+    {
+      border: orange solid 8px;
+      font-size: 32px;
+      line-height: 1.25; /* computes to 40px */
+    }
+
+  div#orthog-horiz
+    {
+      background-color: blue;
+      bottom: 16px;
+      color: white;
+      left: 16px;
+      position: absolute;
+      writing-mode: horizontal-tb;
+    }
+  ]]></style>
+
+ </head>
+
+ <body>
+
+  <div id="vertical-parent">
+    <div id="orthog-horiz">HTB floated right</div>
+    <span>VLR parent</span>
+  </div>
+
+ </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-htb-in-vlr-003.xht b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-htb-in-vlr-003.xht
new file mode 100644
index 0000000..e11aad4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-htb-in-vlr-003.xht
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+ <head>
+
+  <title>CSS Writing Modes Test: orthogonal floated right in vertical-lr context</title>
+
+  <meta name="DC.date.created" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+  <meta name="DC.date.modified" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+
+  <!--
+  Inspired by the test in
+  http://lists.w3.org/Archives/Public/www-style/2016Nov/0044.html
+  -->
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
+  <link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#auto-multicol" title="7.3.2 Auto-sizing Block Containers in Orthogonal Flows" />
+  <link rel="match" href="float-rgt-orthog-htb-in-vlr-003-ref.xht" />
+
+  <meta content="" name="flags" />
+  <meta content="This test checks the horizontal position of an orthogonal floated right block box inside a vertical-lr parent. The orthogonal floated right block box must be put as far to the left as possible inside the vertical-lr line box." name="assert" />
+
+  <style type="text/css"><![CDATA[
+  html
+    {
+      writing-mode: vertical-lr;
+    }
+
+  div#vertical-parent
+    {
+      border: orange solid 8px;
+      font-size: 32px;
+      line-height: 1.25; /* computes to 40px */
+    }
+
+  div#orthog-htb-float-right
+    {
+      background-color: blue;
+      color: white;
+      float: right;
+      writing-mode: horizontal-tb;
+    }
+  ]]></style>
+
+ </head>
+
+ <body>
+
+  <div id="vertical-parent">VLR parent
+    <div id="orthog-htb-float-right">HTB floated right</div>
+  </div>
+
+ </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-htb-in-vrl-003-expected.xht b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-htb-in-vrl-003-expected.xht
new file mode 100644
index 0000000..76563a57
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-htb-in-vrl-003-expected.xht
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+ <head>
+
+  <title>CSS Reftest Reference</title>
+
+  <meta name="DC.date.created" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+  <meta name="DC.date.modified" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
+
+  <meta content="" name="flags" />
+
+  <style type="text/css"><![CDATA[
+  html
+    {
+      writing-mode: vertical-rl;
+    }
+
+  div#vertical-parent
+    {
+      border: orange solid 8px;
+      font-size: 32px;
+      line-height: 1.25; /* computes to 40px */
+    }
+
+  div#orthog-horiz
+    {
+      background-color: blue;
+      bottom: 16px;
+      color: white;
+      position: absolute;
+      right: 16px;
+      writing-mode: horizontal-tb;
+    }
+  ]]></style>
+
+ </head>
+
+ <body>
+
+  <div id="vertical-parent">
+    <div id="orthog-horiz">HTB floated right</div>
+    <span>VRL parent</span>
+  </div>
+
+ </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-htb-in-vrl-003.xht b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-htb-in-vrl-003.xht
new file mode 100644
index 0000000..89cde7b4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-htb-in-vrl-003.xht
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+ <head>
+
+  <title>CSS Writing Modes Test: orthogonal floated right in vertical-rl context</title>
+
+  <meta name="DC.date.created" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+  <meta name="DC.date.modified" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+
+  <!--
+  Inspired by the test in
+  http://lists.w3.org/Archives/Public/www-style/2016Nov/0044.html
+  -->
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
+  <link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#auto-multicol" title="7.3.2 Auto-sizing Block Containers in Orthogonal Flows" />
+  <link rel="match" href="float-rgt-orthog-htb-in-vrl-003-ref.xht" />
+
+  <meta content="" name="flags" />
+  <meta content="This test checks the horizontal position of an orthogonal floated right block box inside a vertical-rl parent. The orthogonal floated right block box must be put as far to the right as possible inside the vertical-rl line box." name="assert" />
+
+  <style type="text/css"><![CDATA[
+  html
+    {
+      writing-mode: vertical-rl;
+    }
+
+  div#vertical-parent
+    {
+      border: orange solid 8px;
+      font-size: 32px;
+      line-height: 1.25; /* computes to 40px */
+    }
+
+  div#orthog-htb-float-right
+    {
+      background-color: blue;
+      color: white;
+      float: right;
+      writing-mode: horizontal-tb;
+    }
+  ]]></style>
+
+ </head>
+
+ <body>
+
+  <div id="vertical-parent">VRL parent
+    <div id="orthog-htb-float-right">HTB floated right</div>
+  </div>
+
+ </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vrl-003-expected.xht b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vlr-in-htb-003-expected.xht
similarity index 61%
copy from third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vrl-003-expected.xht
copy to third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vlr-in-htb-003-expected.xht
index ade372a..e690a816 100644
--- a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vrl-003-expected.xht
+++ b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vlr-in-htb-003-expected.xht
@@ -6,10 +6,8 @@
 
   <title>CSS Reftest Reference</title>
 
-  <meta name="DC.date.created" content="2016-12-14T09:54:03+11:00" scheme=
-  "W3CDTF" />
-  <meta name="DC.date.modified" content="2017-02-04T09:54:03+11:00" scheme=
-  "W3CDTF" />
+  <meta name="DC.date.created" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+  <meta name="DC.date.modified" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
 
   <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
 
@@ -18,18 +16,18 @@
   <style type="text/css"><![CDATA[
   div#horiz-parent
     {
-      border: orange solid 3px;
-      font-size: 16px;
-      line-height: 1.25;
+      border: orange solid 8px;
+      font-size: 32px;
+      line-height: 1.25; /* computes to 40px */
     }
 
   div#orthog-vert
     {
       background-color: blue;
       color: white;
-      right: 11px;
+      right: 16px;
       position: absolute;
-      writing-mode: vertical-rl;
+      writing-mode: vertical-lr;
     }
   ]]></style>
 
@@ -38,8 +36,8 @@
  <body>
 
   <div id="horiz-parent">
-    <div id="orthog-vert">vertical-rl floated right</div>
-    horizontal-tb parent
+    <div id="orthog-vert">VLR floated right</div>
+    HTB parent
   </div>
 
  </body>
diff --git a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vlr-in-htb-003.xht b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vlr-in-htb-003.xht
new file mode 100644
index 0000000..09e5979
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vlr-in-htb-003.xht
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+ <head>
+
+  <title>CSS Writing Modes Test: orthogonal floated right in horizontal-tb context</title>
+
+  <meta name="DC.date.created" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+  <meta name="DC.date.modified" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+
+  <!--
+  Inspired by the test in
+  http://lists.w3.org/Archives/Public/www-style/2016Nov/0044.html
+  -->
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
+  <link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#auto-multicol" title="7.3.2 Auto-sizing Block Containers in Orthogonal Flows" />
+  <link rel="match" href="float-rgt-orthog-vlr-in-htb-003-ref.xht" />
+
+  <meta content="" name="flags" />
+  <meta content="This test checks the vertical position of an orthogonal floated right block box inside an horizontal-tb parent. The orthogonal floated right block box must be put as high as possible inside the horizontal-tb line box." name="assert" />
+
+  <style type="text/css"><![CDATA[
+  div#horiz-parent
+    {
+      border: orange solid 8px;
+      font-size: 32px;
+      line-height: 1.25; /* computes to 40px */
+    }
+
+  div#orthog-vlr-float-right
+    {
+      background-color: blue;
+      color: white;
+      float: right;
+      writing-mode: vertical-lr;
+    }
+  ]]></style>
+
+ </head>
+
+ <body>
+
+  <div id="horiz-parent">HTB parent
+    <div id="orthog-vlr-float-right">VLR floated right</div>
+  </div>
+
+ </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vrl-003.xht b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vrl-003.xht
deleted file mode 100644
index 77461fc..0000000
--- a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vrl-003.xht
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-
- <head>
-
-  <title>CSS Writing Modes Test: floated right in vertical-rl orthogonal context</title>
-
-  <meta name="DC.date.created" content="2016-11-08T09:54:03+11:00" scheme=
-  "W3CDTF" />
-  <meta name="DC.date.modified" content="2017-02-04T09:54:03+11:00" scheme=
-  "W3CDTF" />
-
-  <!--
-  Inspired by the test in
-  http://lists.w3.org/Archives/Public/www-style/2016Nov/0044.html
-  -->
-
-  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
-  <link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#auto-multicol" title="7.3.2 Auto-sizing Block Containers in Orthogonal Flows" />
-  <link rel="match" href="float-rgt-orthog-vrl-003-ref.xht" />
-
-  <meta content="" name="flags" />
-  <meta content="This test checks that the vertical placement of an orthogonal floated right block box inside an horizontal-tb parent. The orthogonal floated right block box should be located as high as possible inside the horizontal-tb line box." name="assert" />
-
-  <style type="text/css"><![CDATA[
-  div#horiz-parent
-    {
-      border: orange solid 3px;
-      font-size: 16px;
-      line-height: 1.25;
-    }
-
-  div#orthog-vrl-float-right
-    {
-      background-color: blue;
-      color: white;
-      float: right;
-      writing-mode: vertical-rl;
-    }
-  ]]></style>
-
- </head>
-
- <body>
-
-  <div id="horiz-parent">horizontal-tb parent
-    <div id="orthog-vrl-float-right">vertical-rl floated right</div>
-  </div>
-
- </body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vrl-003-expected.xht b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vrl-in-htb-003-expected.xht
similarity index 70%
rename from third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vrl-003-expected.xht
rename to third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vrl-in-htb-003-expected.xht
index ade372a..d22bed1 100644
--- a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vrl-003-expected.xht
+++ b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vrl-in-htb-003-expected.xht
@@ -6,10 +6,8 @@
 
   <title>CSS Reftest Reference</title>
 
-  <meta name="DC.date.created" content="2016-12-14T09:54:03+11:00" scheme=
-  "W3CDTF" />
-  <meta name="DC.date.modified" content="2017-02-04T09:54:03+11:00" scheme=
-  "W3CDTF" />
+  <meta name="DC.date.created" content="2016-12-14T09:54:03+11:00" scheme="W3CDTF" />
+  <meta name="DC.date.modified" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
 
   <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
 
@@ -18,16 +16,16 @@
   <style type="text/css"><![CDATA[
   div#horiz-parent
     {
-      border: orange solid 3px;
-      font-size: 16px;
-      line-height: 1.25;
+      border: orange solid 8px;
+      font-size: 32px;
+      line-height: 1.25; /* computes to 40px */
     }
 
   div#orthog-vert
     {
       background-color: blue;
       color: white;
-      right: 11px;
+      right: 16px;
       position: absolute;
       writing-mode: vertical-rl;
     }
@@ -38,8 +36,8 @@
  <body>
 
   <div id="horiz-parent">
-    <div id="orthog-vert">vertical-rl floated right</div>
-    horizontal-tb parent
+    <div id="orthog-vert">VRL floated right</div>
+    HTB parent
   </div>
 
  </body>
diff --git a/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vrl-in-htb-003.xht b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vrl-in-htb-003.xht
new file mode 100644
index 0000000..203c16e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/csswg-test/css-writing-modes-3/float-rgt-orthog-vrl-in-htb-003.xht
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+ <head>
+
+  <title>CSS Writing Modes Test: orthogonal floated right in horizontal-tb context</title>
+
+  <meta name="DC.date.created" content="2016-11-08T09:54:03+11:00" scheme="W3CDTF" />
+  <meta name="DC.date.modified" content="2017-02-17T09:54:03+11:00" scheme="W3CDTF" />
+
+  <!--
+  Inspired by the test in
+  http://lists.w3.org/Archives/Public/www-style/2016Nov/0044.html
+  -->
+
+  <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
+  <link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#auto-multicol" title="7.3.2 Auto-sizing Block Containers in Orthogonal Flows" />
+  <link rel="match" href="float-rgt-orthog-vrl-in-htb-003-ref.xht" />
+
+  <meta content="" name="flags" />
+  <meta content="This test checks the vertical position of an orthogonal floated right block box inside an horizontal-tb parent. The orthogonal floated right block box must be put as high as possible inside the horizontal-tb line box." name="assert" />
+
+  <style type="text/css"><![CDATA[
+  div#horiz-parent
+    {
+      border: orange solid 8px;
+      font-size: 32px;
+      line-height: 1.25; /* computes to 40px */
+    }
+
+  div#orthog-vrl-float-right
+    {
+      background-color: blue;
+      color: white;
+      float: right;
+      writing-mode: vertical-rl;
+    }
+  ]]></style>
+
+ </head>
+
+ <body>
+
+  <div id="horiz-parent">HTB parent
+    <div id="orthog-vrl-float-right">VRL floated right</div>
+  </div>
+
+ </body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/accessibility/accessibility-ignoredNodes-expected.txt b/third_party/WebKit/LayoutTests/inspector-protocol/accessibility/accessibility-ignoredNodes-expected.txt
index b932ae56..3414b09 100644
--- a/third_party/WebKit/LayoutTests/inspector-protocol/accessibility/accessibility-ignoredNodes-expected.txt
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/accessibility/accessibility-ignoredNodes-expected.txt
@@ -178,8 +178,17 @@
 }
 
 WebArea
+  Div
+  tree
+  img
+  button "Buttons are leaf nodes"
+  text "List item also presentational"
   *Div
     text "Div in list isn't presentational"
+  checkbox "Content within label refers to label container"
+  Div
+  combobox
+  Div
 {
   "nodeId": "<string>",
   "ignored": false,
@@ -357,11 +366,17 @@
 }
 
 WebArea
+  Div
+  tree
+  img
+  button "Buttons are leaf nodes"
+  text "List item also presentational"
+  Div
+  checkbox "Content within label refers to label container"
+  Div
   *combobox
     MenuListPopup
-      menuitem "Options should be"
-      menuitem "sent down even though"
-      menuitem "they are grandchildren"
+  Div
 {
   "nodeId": "<string>",
   "ignored": false,
@@ -414,3 +429,36 @@
   "domNode": "select"
 }
 
+*menuitem "Options should be"
+{
+  "nodeId": "<string>",
+  "ignored": false,
+  "role": {
+    "type": "role",
+    "value": "menuitem"
+  },
+  "name": {
+    "type": "computedString",
+    "value": "Options should be",
+    "sources": [
+      {
+        "type": "relatedElement",
+        "attribute": "aria-labelledby"
+      },
+      {
+        "type": "attribute",
+        "attribute": "aria-label"
+      },
+      {
+        "type": "contents",
+        "value": {
+          "type": "computedString",
+          "value": "Options should be"
+        }
+      }
+    ]
+  },
+  "properties": [],
+  "domNode": "option"
+}
+
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/accessibility/accessibility-ignoredNodes.html b/third_party/WebKit/LayoutTests/inspector-protocol/accessibility/accessibility-ignoredNodes.html
index 05d3896..c64e219 100644
--- a/third_party/WebKit/LayoutTests/inspector-protocol/accessibility/accessibility-ignoredNodes.html
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/accessibility/accessibility-ignoredNodes.html
@@ -51,7 +51,7 @@
     <canvas role="presentation" data-dump><div>Canvas fallback content</div></canvas>
 
     <select data-dump>
-      <option>Options should be</option>
+      <option data-dump>Options should be</option>
       <option>sent down even though</option>
       <option>they are grandchildren</option>
     </select>
diff --git a/third_party/WebKit/LayoutTests/platform/linux/compositing/overlap-blending/reflection-opacity-huge-expected.png b/third_party/WebKit/LayoutTests/platform/linux/compositing/overlap-blending/reflection-opacity-huge-expected.png
index aadf63d..4209878 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/compositing/overlap-blending/reflection-opacity-huge-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/linux/compositing/overlap-blending/reflection-opacity-huge-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/animation-inside-reflection-expected.png b/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/animation-inside-reflection-expected.png
index 9cb6b770..11043490 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/animation-inside-reflection-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/animation-inside-reflection-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/deeply-nested-reflections-expected.png b/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/deeply-nested-reflections-expected.png
index a53a7233..7c52e2e 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/deeply-nested-reflections-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/deeply-nested-reflections-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/load-video-in-reflection-expected.png b/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/load-video-in-reflection-expected.png
index 953b1554..b5e3db3 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/load-video-in-reflection-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/load-video-in-reflection-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/nested-reflection-anchor-point-expected.png b/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/nested-reflection-anchor-point-expected.png
index a3cf5845..38b08b1 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/nested-reflection-anchor-point-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/nested-reflection-anchor-point-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/nested-reflection-animated-expected.png b/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/nested-reflection-animated-expected.png
index 67040e01..41cf685 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/nested-reflection-animated-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/nested-reflection-animated-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/nested-reflection-mask-change-expected.png b/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/nested-reflection-mask-change-expected.png
index d287837..db7e3d9 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/nested-reflection-mask-change-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/nested-reflection-mask-change-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/nested-reflection-opacity-expected.png b/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/nested-reflection-opacity-expected.png
index 70eca18..a47b812 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/nested-reflection-opacity-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/linux/compositing/reflections/nested-reflection-opacity-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/inspector-protocol/accessibility/accessibility-ignoredNodes-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/inspector-protocol/accessibility/accessibility-ignoredNodes-expected.txt
index 43cf62d..e1d2375 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/inspector-protocol/accessibility/accessibility-ignoredNodes-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/inspector-protocol/accessibility/accessibility-ignoredNodes-expected.txt
@@ -178,8 +178,17 @@
 }
 
 WebArea
+  Div
+  tree
+  img
+  button "Buttons are leaf nodes"
+  text "List item also presentational"
   *Div
     text "Div in list isn't presentational"
+  checkbox "Content within label refers to label container"
+  Div
+  combobox
+  Div
 {
   "nodeId": "<string>",
   "ignored": false,
@@ -357,11 +366,17 @@
 }
 
 WebArea
+  Div
+  tree
+  img
+  button "Buttons are leaf nodes"
+  text "List item also presentational"
+  Div
+  checkbox "Content within label refers to label container"
+  Div
   *combobox
     MenuListPopup
-      menuitem "Options should be"
-      menuitem "sent down even though"
-      menuitem "they are grandchildren"
+  Div
 {
   "nodeId": "<string>",
   "ignored": false,
@@ -414,3 +429,36 @@
   "domNode": "select"
 }
 
+*menuitem "Options should be"
+{
+  "nodeId": "<string>",
+  "ignored": false,
+  "role": {
+    "type": "role",
+    "value": "menuitem"
+  },
+  "name": {
+    "type": "computedString",
+    "value": "Options should be",
+    "sources": [
+      {
+        "type": "relatedElement",
+        "attribute": "aria-labelledby"
+      },
+      {
+        "type": "attribute",
+        "attribute": "aria-label"
+      },
+      {
+        "type": "contents",
+        "value": {
+          "type": "computedString",
+          "value": "Options should be"
+        }
+      }
+    ]
+  },
+  "properties": [],
+  "domNode": "option"
+}
+
diff --git a/third_party/WebKit/LayoutTests/platform/linux/media/video-layer-crash-expected.png b/third_party/WebKit/LayoutTests/platform/linux/media/video-layer-crash-expected.png
index 226d7e7f..a90bca1 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/media/video-layer-crash-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/linux/media/video-layer-crash-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/animation-inside-reflection-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/animation-inside-reflection-expected.png
index aa2e6b1..0f14a06 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/animation-inside-reflection-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/animation-inside-reflection-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/deeply-nested-reflections-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/deeply-nested-reflections-expected.png
index a7dd35c..9409676 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/deeply-nested-reflections-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/deeply-nested-reflections-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/nested-reflection-anchor-point-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/nested-reflection-anchor-point-expected.png
index 76eeaa4..1ae5cb4 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/nested-reflection-anchor-point-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/nested-reflection-anchor-point-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/nested-reflection-animated-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/nested-reflection-animated-expected.png
index f109e14..b4c025af 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/nested-reflection-animated-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/nested-reflection-animated-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/nested-reflection-mask-change-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/nested-reflection-mask-change-expected.png
index 0f88eafb..731e47e 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/nested-reflection-mask-change-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/reflections/nested-reflection-mask-change-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/media/video-layer-crash-expected.png b/third_party/WebKit/LayoutTests/platform/mac/media/video-layer-crash-expected.png
index 908effe..6c84ef55 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/media/video-layer-crash-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/media/video-layer-crash-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/animation-inside-reflection-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/animation-inside-reflection-expected.png
index b215d73..4b0a476 100644
--- a/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/animation-inside-reflection-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/animation-inside-reflection-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/deeply-nested-reflections-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/deeply-nested-reflections-expected.png
index ca279d0..dd7b705 100644
--- a/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/deeply-nested-reflections-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/deeply-nested-reflections-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/nested-reflection-anchor-point-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/nested-reflection-anchor-point-expected.png
index f4b023b..9a16aac 100644
--- a/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/nested-reflection-anchor-point-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/nested-reflection-anchor-point-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/nested-reflection-animated-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/nested-reflection-animated-expected.png
index bfea399..e1c9563 100644
--- a/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/nested-reflection-animated-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/nested-reflection-animated-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/nested-reflection-mask-change-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/nested-reflection-mask-change-expected.png
index 97c9f788..d746a2e 100644
--- a/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/nested-reflection-mask-change-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/compositing/reflections/nested-reflection-mask-change-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/media/video-layer-crash-expected.png b/third_party/WebKit/LayoutTests/platform/win/media/video-layer-crash-expected.png
index b80c50a..35554a8 100644
--- a/third_party/WebKit/LayoutTests/platform/win/media/video-layer-crash-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/win/media/video-layer-crash-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/media/video-layer-crash-expected.png b/third_party/WebKit/LayoutTests/platform/win7/media/video-layer-crash-expected.png
deleted file mode 100644
index 9c6758e9..0000000
--- a/third_party/WebKit/LayoutTests/platform/win7/media/video-layer-crash-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/Source/build/scripts/make_computed_style_base.py b/third_party/WebKit/Source/build/scripts/make_computed_style_base.py
index af01def..a24ebf7 100755
--- a/third_party/WebKit/Source/build/scripts/make_computed_style_base.py
+++ b/third_party/WebKit/Source/build/scripts/make_computed_style_base.py
@@ -31,23 +31,28 @@
     regular member variables, or more complex storage like vectors or hashmaps.
     Almost all properties will have at least one Field, often more than one.
 
-    Fields also fall into various families, which determine the logic that is
-    used to generate them. The available field families are:
+    Fields also fall into various roles, which determine the logic that is
+    used to generate them. The available field roles are:
       - 'property', for fields that store CSS properties
       - 'inherited_flag', for single-bit flags that store whether a property is
                           inherited by this style or set explicitly
+      - 'nonproperty', for fields that are not CSS properties
     """
 
     # List of required attributes for a field which need to be passed in by
-    # keyword arguments
+    # keyword arguments. See CSSProperties.json5 for an explanation of each
+    # attribute.
     REQUIRED_ATTRIBUTES = set([
         # Name of field
         'name',
         # Name of property field is for
         'property_name',
-        # Internal field storage type (storage_type_path can be None)
-        'storage_type',
-        'storage_type_path',
+        # Name of the type (e.g. EClear, int)
+        'type_name',
+        # Path to predefined class for overriding generated types.
+        'field_type_path',
+        # Affects how the field is generated (keyword, flag)
+        'field_template',
         # Bits needed for storage
         'size',
         # Default value for field
@@ -59,18 +64,18 @@
         'resetter_method_name',
     ])
 
-    def __init__(self, field_family, **kwargs):
+    def __init__(self, field_role, **kwargs):
         # Values common to all fields
         # Set attributes from the keyword arguments
         for attrib in Field.REQUIRED_ATTRIBUTES:
             setattr(self, attrib, kwargs.pop(attrib))
 
-        # Field family: one of these must be true
-        self.is_property = field_family == 'property'
-        self.is_inherited_flag = field_family == 'inherited_flag'
-        self.is_nonproperty = field_family == 'nonproperty'
+        # Field role: one of these must be true
+        self.is_property = field_role == 'property'
+        self.is_inherited_flag = field_role == 'inherited_flag'
+        self.is_nonproperty = field_role == 'nonproperty'
         assert (self.is_property, self.is_inherited_flag, self.is_nonproperty).count(True) == 1, \
-            'Field family has to be exactly one of: property, inherited_flag, nonproperty'
+            'Field role has to be exactly one of: property, inherited_flag, nonproperty'
 
         if self.is_property:
             self.is_inherited = kwargs.pop('inherited')
@@ -91,8 +96,8 @@
     """
     enums = {}
     for property_ in properties:
-        # Only generate enums for keyword properties that use the default field_storage_type.
-        if property_['keyword_only'] and property_['field_storage_type'] is None:
+        # Only generate enums for keyword properties that use the default field_type_path.
+        if property_['field_template'] == 'keyword' and property_['field_type_path'] is None:
             enum_name = property_['type_name']
             # From the Blink style guide: Enum members should use InterCaps with an initial capital letter. [names-enum-members]
             enum_values = [('k' + camel_case(k)) for k in property_['keywords']]
@@ -118,15 +123,15 @@
 
     # From the Blink style guide: Other data members should be prefixed by "m_". [names-data-members]
     field_name = 'm_' + property_name_lower
-    bits_needed = math.log(len(property_['keywords']), 2)
+    bits_needed = math.log(len(property_['keywords']), 2)  # TODO: implement for non-enums
 
     # Separate the type path from the type name, if specified.
-    if property_['field_storage_type']:
-        type_path = property_['field_storage_type']
-        type_name = type_path.split('/')[-1]
+    if property_['field_type_path']:
+        field_type_path = property_['field_type_path']
+        type_name = field_type_path.split('/')[-1]
     else:
+        field_type_path = None
         type_name = property_['type_name']
-        type_path = None
 
     # For now, the getter name should match the field name. Later, getter names
     # will start with an uppercase letter, so if they conflict with the type name,
@@ -136,19 +141,19 @@
         getter_method_name = 'get' + property_name
 
     assert property_['initial_keyword'] is not None, \
-        ('MakeComputedStyleBase requires an initial keyword for keyword_only values, none specified '
+        ('MakeComputedStyleBase requires an initial keyword for keyword fields, none specified '
          'for property ' + property_['name'])
     default_value = type_name + '::k' + camel_case(property_['initial_keyword'])
 
-    # Add the property itself as a member variable.
     return Field(
         'property',
         name=field_name,
         property_name=property_['name'],
         inherited=property_['inherited'],
         independent=property_['independent'],
-        storage_type=type_name,
-        storage_type_path=type_path,
+        type_name=type_name,
+        field_type_path=field_type_path,
+        field_template=property_['field_template'],
         size=int(math.ceil(bits_needed)),
         default_value=default_value,
         getter_method_name=getter_method_name,
@@ -174,8 +179,9 @@
         'inherited_flag',
         name='m_' + field_name_suffix_lower,
         property_name=property_['name'],
-        storage_type='bool',
-        storage_type_path=None,
+        type_name='bool',
+        field_type_path=None,
+        field_template='flag',
         size=1,
         default_value='true',
         getter_method_name=field_name_suffix_lower,
@@ -196,8 +202,9 @@
         'nonproperty',
         name=member_name,
         property_name=field_name,
-        storage_type='bool',
-        storage_type_path=None,
+        type_name='bool',
+        field_type_path=None,
+        field_template='flag',
         size=1,
         default_value='false',
         getter_method_name=field_name,
@@ -213,8 +220,8 @@
     """
     fields = []
     for property_ in properties:
-        # Keywords only means we generate an enum field.
-        if property_['keyword_only']:
+        # Only generate properties that have a field template
+        if property_['field_template'] is not None:
             # If the property is independent, add the single-bit sized isInherited flag
             # to the list of Fields as well.
             if property_['independent']:
diff --git a/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.h.tmpl b/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.h.tmpl
index b89cff5..738b7249 100644
--- a/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.h.tmpl
+++ b/third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.h.tmpl
@@ -6,8 +6,8 @@
 
 #include "core/ComputedStyleBaseConstants.h"
 #include "core/CoreExport.h"
-{% for field in fields if field.storage_type_path != None %}
-#include "{{field.storage_type_path}}.h"
+{% for field in fields if field.field_type_path != None %}
+#include "{{field.field_type_path}}.h"
 {% endfor %}
 
 {# Returns the default value for the field, converted to fit in the storage container. #}
@@ -100,22 +100,33 @@
   // Fields.
   // TODO(sashab): Remove initialFoo() static methods and update callers to
   // use resetFoo(), which can be more efficient.
+
   {% for field in fields %}
   // {{field.property_name}}
-  inline static {{field.storage_type}} {{field.initial_method_name}}() { return {{field.default_value}}; }
-  {{field.storage_type}} {{field.getter_method_name}}() const { return static_cast<{{field.storage_type}}>({{field.name}}); }
+  inline static {{field.type_name}} {{field.initial_method_name}}() {
+    return {{field.default_value}};
+  }
+  {{field.type_name}} {{field.getter_method_name}}() const {
+    return static_cast<{{field.type_name}}>({{field.name}});
+  }
   {% if field.is_nonproperty %}
-  void {{field.setter_method_name}}() { {{field.name}} = static_cast<unsigned>(true); }
+  void {{field.setter_method_name}}() {
+    {{field.name}} = static_cast<unsigned>(true);
+  }
   {% else %}
-  void {{field.setter_method_name}}({{field.storage_type}} v) { {{field.name}} = static_cast<unsigned>(v); }
+  void {{field.setter_method_name}}({{field.type_name}} v) {
+    {{field.name}} = static_cast<unsigned>(v);
+  }
   {% endif %}
-  inline void {{field.resetter_method_name}}() { {{field.name}} = {{default_value(field)}}; }
+  inline void {{field.resetter_method_name}}() {
+    {{field.name}} = {{default_value(field)}};
+  }
 
   {% endfor %}
  protected:
   // Storage.
   {% for field in fields %}
-  unsigned {{field.name}} : {{field.size}}; // {{field.storage_type}}
+  unsigned {{field.name}} : {{field.size}}; // {{field.type_name}}
   {% endfor %}
 };
 
diff --git a/third_party/WebKit/Source/core/css/CSSProperties.json5 b/third_party/WebKit/Source/core/css/CSSProperties.json5
index 35ca028..15f86228 100644
--- a/third_party/WebKit/Source/core/css/CSSProperties.json5
+++ b/third_party/WebKit/Source/core/css/CSSProperties.json5
@@ -55,28 +55,28 @@
       valid_values: ["parseSingleValue", "parseShorthand"],
     },
 
-    // - keyword_only
-    // These properties only store keyword values. This is used when
-    // generating the ComputedStyle storage for the property. The initial
-    // value for this property on a ComputedStyle is specified with the
-    // initial_keyword flag below.
-    // TODO(sashab): Rename this to field_type=keyword once we support
-    // multiple types of generatable fields in ComputedStyle
+    // - field_template
+    // Affects how the interface to this field is generated.
     // TODO(sashab, meade): Remove this once TypedOM types are specified for
     // every property, since this value can be inferred from that.
-    keyword_only: {
-      default: false,
-      valid_type: "bool",
+    field_template: {
+      valid_values: [
+        // Field is stored as an enum and has a initial/getter/setter/resetter.
+        "keyword",
+        // Field is stored a packed boolean flag and has a initial/getter/setter/resetter.
+        // TODO(shend): generalise this to "primitive"
+        "flag",
+      ],
     },
 
-    // - field_storage_type: "path/to/Type"
+    // - field_type_path: "path/to/Type"
     // For properties that have generated field storage in ComputedStyle,
     // this optional argument will override the field's generated type with
     // an external one specified at the given path. The type must be defined
     // in a header file at that path, and have the same name as the file.
     // Currently, only enum types are supported, and the enum's only values
     // must be CamelCase values of the keywords of the property.
-    field_storage_type: {
+    field_type_path: {
     },
 
     // - keywords: ["keyword1", "keyword2"]
@@ -88,8 +88,7 @@
     },
 
     // - initial_keyword: "keyword-value"
-    // This specifies the initial keyword value for the keyword_only
-    // property.
+    // This specifies the initial keyword value for the keyword fields.
     initial_keyword: {
     },
 
@@ -328,10 +327,10 @@
     {
       name: "direction",
       custom_value: true,
-      field_storage_type: "platform/text/TextDirection",
+      field_type_path: "platform/text/TextDirection",
       inherited: true,
       initial_keyword: "ltr",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: ["ltr", "rtl"],
       priority: "High",
     },
@@ -481,10 +480,10 @@
     {
       name: "writing-mode",
       custom_value: true,
-      field_storage_type: "platform/text/WritingMode",
+      field_type_path: "platform/text/WritingMode",
       inherited: true,
       initial_keyword: "horizontal-tb",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: ["horizontal-tb", "vertical-rl", "vertical-lr"],
       priority: "High",
       type_name: "WritingMode",
@@ -641,7 +640,7 @@
       independent: true,
       inherited: true,
       initial_keyword: "separate",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: ["separate", "collapse"],
     },
     {
@@ -768,7 +767,7 @@
       // Storage for this property also covers these legacy properties:
       // page-break-after, -webkit-column-break-after
       initial_keyword: "auto",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: [
         "auto", "avoid", "avoid-column", "avoid-page", "column", "left", "page", "recto", "right", "verso"
       ],
@@ -779,7 +778,7 @@
       // Storage for this property also covers these legacy properties:
       // page-break-before, -webkit-column-break-before
       initial_keyword: "auto",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: [
         "auto", "avoid", "avoid-column", "avoid-page", "column", "left", "page", "recto", "right", "verso"
       ],
@@ -790,7 +789,7 @@
       // Storage for this property also covers these legacy properties:
       // page-break-inside, -webkit-column-break-inside
       initial_keyword: "auto",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: ["auto", "avoid", "avoid-column", "avoid-page"],
     },
     {
@@ -802,7 +801,7 @@
       independent: true,
       inherited: true,
       initial_keyword: "top",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: ["top", "bottom", "left", "right"],
     },
     {
@@ -816,7 +815,7 @@
     {
       name: "clear",
       initial_keyword: "none",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: ["none", "left", "right", "both"],
     },
     {
@@ -923,7 +922,7 @@
       independent: true,
       inherited: true,
       initial_keyword: "show",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: ["show", "hide"],
       type_name: "EEmptyCells",
     },
@@ -982,7 +981,7 @@
     {
       name: "float",
       initial_keyword: "none",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: ["none", "left", "right"],
       name_for_methods: "Floating",
       type_name: "EFloat",
@@ -1176,14 +1175,14 @@
       independent: true,
       inherited: true,
       initial_keyword: "outside",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: ["outside", "inside"],
     },
     {
       name: "list-style-type",
       inherited: true,
       initial_keyword: "disc",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: [
         "disc", "circle", "square", "decimal", "decimal-leading-zero", "arabic-indic", "bengali", "cambodian", "khmer", "devanagari", "gujarati", "gurmukhi", "kannada", "lao", "malayalam", "mongolian", "myanmar", "oriya", "persian", "urdu", "telugu", "tibetan", "thai", "lower-roman", "upper-roman", "lower-greek", "lower-alpha", "lower-latin", "upper-alpha", "upper-latin", "cjk-earthly-branch", "cjk-heavenly-stem", "ethiopic-halehame", "ethiopic-halehame-am", "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", "hangul", "hangul-consonant", "korean-hangul-formal", "korean-hanja-formal", "korean-hanja-informal", "hebrew", "armenian", "lower-armenian", "upper-armenian", "georgian", "cjk-ideographic", "simp-chinese-formal", "simp-chinese-informal", "trad-chinese-formal", "trad-chinese-informal", "hiragana", "katakana", "hiragana-iroha", "katakana-iroha", "none",
       ],
@@ -1400,7 +1399,7 @@
       runtime_flag: "ScrollAnchoring",
       inherited: false,
       initial_keyword: "auto",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: [
         "visible", "none", "auto",
       ],
@@ -1412,7 +1411,7 @@
     {
       name: "overflow-x",
       initial_keyword: "visible",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: [
         "visible", "hidden", "scroll", "auto", "overlay", "-webkit-paged-x", "-webkit-paged-y",
       ],
@@ -1421,7 +1420,7 @@
     {
       name: "overflow-y",
       initial_keyword: "visible",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: [
         "visible", "hidden", "scroll", "auto", "overlay", "-webkit-paged-x", "-webkit-paged-y",
       ],
@@ -1483,7 +1482,7 @@
       independent: true,
       inherited: true,
       initial_keyword: "auto",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: [
         "none", "auto", "stroke", "fill", "painted", "visible", "visibleStroke", "visibleFill", "visiblePainted", "bounding-box", "all",
       ],
@@ -1492,7 +1491,7 @@
       name: "position",
       custom_inherit: true,
       initial_keyword: "static",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: [
         "static", "relative", "absolute", "fixed", "sticky",
       ],
@@ -1708,7 +1707,7 @@
     {
       name: "table-layout",
       initial_keyword: "auto",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: [
         "auto", "fixed"
       ]
@@ -1726,7 +1725,7 @@
       custom_value: true,
       inherited: true,
       initial_keyword: "start",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: [
         "left", "right", "center", "justify", "webkitLeft", "webkitRight", "webkitCenter", "start", "end",
       ],
@@ -1822,7 +1821,7 @@
       independent: true,
       inherited: true,
       initial_keyword: "none",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: ["capitalize", "uppercase", "lowercase", "none"],
     },
     {
@@ -1895,9 +1894,9 @@
     },
     {
       name: "unicode-bidi",
-      field_storage_type: "platform/text/UnicodeBidi",
+      field_type_path: "platform/text/UnicodeBidi",
       initial_keyword: "normal",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: [
         "normal", "embed", "bidi-override", "isolate", "plaintext", "isolate-override",
       ],
@@ -1921,7 +1920,7 @@
       inherited: true,
       initial_keyword: "visible",
       interpolable: true,
-      keyword_only: true,
+      field_template: "keyword",
       keywords: ["visible", "hidden", "collapse"],
     },
     {
@@ -1986,7 +1985,7 @@
       independent: true,
       inherited: true,
       initial_keyword: "normal",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: ["normal", "reverse"],
     },
     {
@@ -2191,7 +2190,7 @@
       independent: true,
       inherited: true,
       initial_keyword: "economy",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: ["economy", "exact"],
     },
     {
@@ -2200,7 +2199,7 @@
       inherited: true,
       initial: "initialRtlOrdering",
       initial_keyword: "logical",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: ["logical", "visual"],
       setter: "setRtlOrdering",
       type_name: "EOrder",
@@ -2301,7 +2300,7 @@
       independent: true,
       inherited: true,
       initial_keyword: "normal",
-      keyword_only: true,
+      field_template: "keyword",
       keywords: ["normal", "pre", "pre-wrap", "pre-line", "nowrap", "-webkit-nowrap"],
     },
     {
diff --git a/third_party/WebKit/Source/modules/accessibility/AXMenuListOption.cpp b/third_party/WebKit/Source/modules/accessibility/AXMenuListOption.cpp
index db27248..c59a31d 100644
--- a/third_party/WebKit/Source/modules/accessibility/AXMenuListOption.cpp
+++ b/third_party/WebKit/Source/modules/accessibility/AXMenuListOption.cpp
@@ -26,6 +26,7 @@
 #include "modules/accessibility/AXMenuListOption.h"
 
 #include "SkMatrix44.h"
+#include "core/html/HTMLSelectElement.h"
 #include "modules/accessibility/AXMenuListPopup.h"
 #include "modules/accessibility/AXObjectCacheImpl.h"
 
@@ -38,7 +39,7 @@
     : AXMockObject(axObjectCache), m_element(element) {}
 
 AXMenuListOption::~AXMenuListOption() {
-  ASSERT(!m_element);
+  DCHECK(!m_element);
 }
 
 void AXMenuListOption::detach() {
@@ -57,6 +58,26 @@
   return MenuListOptionRole;
 }
 
+AXObject* AXMenuListOption::computeParent() const {
+  Node* node = getNode();
+  if (!node)
+    return nullptr;
+  Node* select = toHTMLOptionElement(node)->ownerSelectElement();
+  if (!select)
+    return nullptr;
+  AXObject* selectAXObject = axObjectCache().getOrCreate(select);
+  if (selectAXObject->hasChildren()) {
+    const auto& childObjects = selectAXObject->children();
+    DCHECK(!childObjects.isEmpty());
+    DCHECK_EQ(childObjects.size(), 1UL);
+    DCHECK(childObjects[0]->isMenuListPopup());
+    toAXMenuListPopup(childObjects[0].get())->updateChildrenIfNecessary();
+  } else {
+    selectAXObject->updateChildrenIfNecessary();
+  }
+  return m_parent.get();
+}
+
 Element* AXMenuListOption::actionElement() const {
   return m_element;
 }
@@ -115,12 +136,12 @@
   AXObject* parent = parentObject();
   if (!parent)
     return;
-  ASSERT(parent->isMenuListPopup());
+  DCHECK(parent->isMenuListPopup());
 
   AXObject* grandparent = parent->parentObject();
   if (!grandparent)
     return;
-  ASSERT(grandparent->isMenuList());
+  DCHECK(grandparent->isMenuList());
   grandparent->getRelativeBounds(outContainer, outBoundsInContainer,
                                  outContainerTransform);
 }
@@ -134,7 +155,7 @@
   // If nameSources is non-null, relatedObjects is used in filling it in, so it
   // must be non-null as well.
   if (nameSources)
-    ASSERT(relatedObjects);
+    DCHECK(relatedObjects);
 
   if (!getNode())
     return String();
diff --git a/third_party/WebKit/Source/modules/accessibility/AXMenuListOption.h b/third_party/WebKit/Source/modules/accessibility/AXMenuListOption.h
index 7e19f75..3bb86cc 100644
--- a/third_party/WebKit/Source/modules/accessibility/AXMenuListOption.h
+++ b/third_party/WebKit/Source/modules/accessibility/AXMenuListOption.h
@@ -54,6 +54,7 @@
   bool isDetached() const override { return !m_element; }
   AccessibilityRole roleValue() const override;
   bool canHaveChildren() const override { return false; }
+  AXObject* computeParent() const override;
 
   Element* actionElement() const override;
   bool isEnabled() const override;
diff --git a/third_party/WebKit/Source/modules/accessibility/AXMenuListPopup.h b/third_party/WebKit/Source/modules/accessibility/AXMenuListPopup.h
index c284ab0..93ec8a5 100644
--- a/third_party/WebKit/Source/modules/accessibility/AXMenuListPopup.h
+++ b/third_party/WebKit/Source/modules/accessibility/AXMenuListPopup.h
@@ -49,6 +49,7 @@
   void didShow();
   void didHide();
   AXObject* activeDescendant() final;
+  void updateChildrenIfNecessary() override;
 
  private:
   explicit AXMenuListPopup(AXObjectCacheImpl&);
@@ -60,7 +61,6 @@
   bool isVisible() const override;
   bool press() const override;
   void addChildren() override;
-  void updateChildrenIfNecessary() override;
   bool computeAccessibilityIsIgnored(IgnoredReasons* = nullptr) const override;
 
   AXMenuListOption* menuListOptionAXObject(HTMLElement*) const;
diff --git a/third_party/WebKit/Source/modules/accessibility/InspectorAccessibilityAgent.cpp b/third_party/WebKit/Source/modules/accessibility/InspectorAccessibilityAgent.cpp
index 7e91b0f..4ef4a5f 100644
--- a/third_party/WebKit/Source/modules/accessibility/InspectorAccessibilityAgent.cpp
+++ b/third_party/WebKit/Source/modules/accessibility/InspectorAccessibilityAgent.cpp
@@ -470,14 +470,13 @@
     (*nodes)->addItem(buildObjectForIgnoredNode(domNode, inspectedAXObject,
                                                 fetchRelatives.fromMaybe(true),
                                                 *nodes, *cache));
-    return Response::OK();
   } else {
     (*nodes)->addItem(
         buildProtocolAXObject(*inspectedAXObject, inspectedAXObject,
                               fetchRelatives.fromMaybe(true), *nodes, *cache));
   }
 
-  if (!inspectedAXObject)
+  if (!inspectedAXObject || !inspectedAXObject->isAXLayoutObject())
     return Response::OK();
 
   AXObject* parent = inspectedAXObject->parentObjectUnignored();
@@ -698,6 +697,19 @@
   nodeObject.setChildIds(std::move(childIds));
 }
 
+void InspectorAccessibilityAgent::addChild(
+    std::unique_ptr<protocol::Array<AXNodeId>>& childIds,
+    AXObject& childAXObject,
+    AXObject* inspectedAXObject,
+    std::unique_ptr<protocol::Array<AXNode>>& nodes,
+    AXObjectCacheImpl& cache) const {
+  childIds->addItem(String::number(childAXObject.axObjectID()));
+  if (&childAXObject == inspectedAXObject)
+    return;
+  nodes->addItem(buildProtocolAXObject(childAXObject, inspectedAXObject, true,
+                                       nodes, cache));
+}
+
 void InspectorAccessibilityAgent::addChildren(
     AXObject& axObject,
     AXObject* inspectedAXObject,
@@ -716,14 +728,14 @@
     childIds->addItem(String::number(childAXObject.axObjectID()));
     if (&childAXObject == inspectedAXObject)
       continue;
-    if (&axObject != inspectedAXObject &&
-        (axObject.getNode() ||
-         axObject.parentObjectUnignored() != inspectedAXObject)) {
-      continue;
+    if (&axObject != inspectedAXObject) {
+      if (!inspectedAXObject)
+        continue;
+      if (&axObject != inspectedAXObject->parentObjectUnignored())
+        continue;
     }
 
-    // Only add children of inspected node (or un-inspectable children of
-    // inspected node) to returned nodes.
+    // Only add children/siblings of inspected node to returned nodes.
     std::unique_ptr<AXNode> childNode = buildProtocolAXObject(
         childAXObject, inspectedAXObject, true, nodes, cache);
     nodes->addItem(std::move(childNode));
diff --git a/third_party/WebKit/Source/modules/accessibility/InspectorAccessibilityAgent.h b/third_party/WebKit/Source/modules/accessibility/InspectorAccessibilityAgent.h
index 3ed5d138..9965532 100644
--- a/third_party/WebKit/Source/modules/accessibility/InspectorAccessibilityAgent.h
+++ b/third_party/WebKit/Source/modules/accessibility/InspectorAccessibilityAgent.h
@@ -74,6 +74,11 @@
       AXObject* inspectedAXObject,
       std::unique_ptr<protocol::Array<AXNode>>& nodes,
       AXObjectCacheImpl&) const;
+  void addChild(std::unique_ptr<protocol::Array<AXNodeId>>& childIds,
+                AXObject& childAXObject,
+                AXObject* inspectedAXObject,
+                std::unique_ptr<protocol::Array<AXNode>>& nodes,
+                AXObjectCacheImpl&) const;
   void addChildren(AXObject&,
                    AXObject* inspectedAXObject,
                    std::unique_ptr<protocol::Array<AXNodeId>>& childIds,
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/common/net/buildbot.py b/third_party/WebKit/Tools/Scripts/webkitpy/common/net/buildbot.py
index bab2b1c..b83c2f3 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/common/net/buildbot.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/common/net/buildbot.py
@@ -130,3 +130,23 @@
     if not (master_name and builder_name and build_number):
         return None
     return 'https://build.chromium.org/p/%s/builders/%s/builds/%s' % (master_name, builder_name, build_number)
+
+
+def filter_latest_builds(builds):
+    """Filters Build objects to include only the latest for each builder.
+
+    Args:
+        builds: A collection of Build objects.
+
+    Returns:
+        A list of Build objects; only one Build object per builder name. If
+        there are only Builds with no build number, then one is kept; if there
+        are Builds with build numbers, then the one with the highest build
+        number is kept.
+    """
+    latest_builds = {}
+    for build in builds:
+        builder = build.builder_name
+        if builder not in latest_builds or build.build_number > latest_builds[builder].build_number:
+            latest_builds[builder] = build
+    return sorted(latest_builds.values())
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/common/net/buildbot_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/common/net/buildbot_unittest.py
index 13ec00c..a98e89d 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/common/net/buildbot_unittest.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/common/net/buildbot_unittest.py
@@ -28,7 +28,7 @@
 
 import unittest
 
-from webkitpy.common.net.buildbot import BuildBot
+from webkitpy.common.net.buildbot import BuildBot, Build, filter_latest_builds
 
 
 class BuilderTest(unittest.TestCase):
@@ -57,3 +57,24 @@
         buildbot = BuildBot()
         buildbot._fetch_file = lambda: None  # pylint: disable=protected-access
         self.assertIsNone(buildbot.fetch_layout_test_results(buildbot.results_url('Builder')))
+
+
+class BuildBotHelperFunctionTest(unittest.TestCase):
+
+    def test_filter_latest_jobs_empty(self):
+        self.assertEqual(filter_latest_builds([]), [])
+
+    def test_filter_latest_jobs_higher_build_first(self):
+        self.assertEqual(
+            filter_latest_builds([Build('foo', 5), Build('foo', 3), Build('bar', 5)]),
+            [Build('bar', 5), Build('foo', 5)])
+
+    def test_filter_latest_jobs_higher_build_last(self):
+        self.assertEqual(
+            filter_latest_builds([Build('foo', 3), Build('bar', 5), Build('foo', 5)]),
+            [Build('bar', 5), Build('foo', 5)])
+
+    def test_filter_latest_jobs_no_build_number(self):
+        self.assertEqual(
+            filter_latest_builds([Build('foo', 3), Build('bar'), Build('bar')]),
+            [Build('bar'), Build('foo', 3)])
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/common/net/git_cl.py b/third_party/WebKit/Tools/Scripts/webkitpy/common/net/git_cl.py
index a47a9381..0dce4c6 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/common/net/git_cl.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/common/net/git_cl.py
@@ -10,6 +10,9 @@
 
 import json
 import logging
+import re
+
+from webkitpy.common.net.buildbot import Build, filter_latest_builds
 
 _log = logging.getLogger(__name__)
 
@@ -18,6 +21,7 @@
     'presubmit', 'set-close', 'set-commit', 'status', 'try-results', 'try', 'upload',
 )
 
+
 class GitCL(object):
 
     def __init__(self, host, auth_refresh_token_json=None, cwd=None):
@@ -59,8 +63,15 @@
         self._host.print_('Timed out waiting for try results.')
         return None
 
+    def latest_try_jobs(self, builder_names=None):
+        """Returns a list of Builds for the latest jobs for the given builders."""
+        try_results = self.fetch_try_results()
+        if builder_names:
+            try_results = [r for r in try_results if r['builder_name'] in builder_names]
+        return filter_latest_builds(self._try_result_to_build(r) for r in try_results)
+
     def fetch_try_results(self):
-        """Requests results of try jobs for the current CL."""
+        """Requests results f try jobs for the current CL."""
         with self._host.filesystem.mkdtemp() as temp_directory:
             results_path = self._host.filesystem.join(temp_directory, 'try-results.json')
             self.run(['try-results', '--json', results_path])
@@ -70,6 +81,18 @@
         return json.loads(contents)
 
     @staticmethod
+    def _try_result_to_build(try_result):
+        """Converts a parsed try result dict to a Build object."""
+        builder_name = try_result['builder_name']
+        url = try_result['url']
+        if url is None:
+            return Build(builder_name, None)
+        match = re.match(r'.*/builds/(\d+)?$', url)
+        build_number = match.group(1)
+        assert build_number and build_number.isdigit()
+        return Build(builder_name, int(build_number))
+
+    @staticmethod
     def all_jobs_finished(try_results):
         return all(r.get('status') == 'COMPLETED' for r in try_results)
 
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/common/net/git_cl_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/common/net/git_cl_unittest.py
index 7c47ebc..c67909e 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/common/net/git_cl_unittest.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/common/net/git_cl_unittest.py
@@ -4,9 +4,10 @@
 
 import unittest
 
+from webkitpy.common.host_mock import MockHost
+from webkitpy.common.net.buildbot import Build
 from webkitpy.common.net.git_cl import GitCL
 from webkitpy.common.system.executive_mock import MockExecutive
-from webkitpy.common.host_mock import MockHost
 
 
 class GitCLTest(unittest.TestCase):
@@ -94,11 +95,13 @@
                 'builder_name': 'some-builder',
                 'status': 'COMPLETED',
                 'result': 'FAILURE',
+                'url': 'http://build.chromium.org/p/master/builders/some-builder/builds/90',
             },
             {
                 'builder_name': 'some-builder',
                 'status': 'STARTED',
                 'result': None,
+                'url': 'http://build.chromium.org/p/master/builders/some-builder/builds/100',
             },
         ]))
 
@@ -108,11 +111,13 @@
                 'builder_name': 'some-builder',
                 'status': 'COMPLETED',
                 'result': 'FAILURE',
+                'url': 'http://build.chromium.org/p/master/builders/some-builder/builds/90',
             },
             {
                 'builder_name': 'some-builder',
                 'status': 'COMPLETED',
                 'result': 'SUCCESS',
+                'url': 'http://build.chromium.org/p/master/builders/some-builder/builds/100',
             },
         ]))
 
@@ -125,11 +130,13 @@
                 'builder_name': 'some-builder',
                 'status': 'COMPLETED',
                 'result': 'SUCCESS',
+                'url': 'http://build.chromium.org/p/master/builders/some-builder/builds/90',
             },
             {
                 'builder_name': 'some-builder',
                 'status': 'STARTED',
                 'result': None,
+                'url': 'http://build.chromium.org/p/master/builders/some-builder/builds/100',
             },
         ]))
 
@@ -141,3 +148,35 @@
                 'result': 'FAILURE',
             },
         ]))
+
+    def test_latest_try_builds(self):
+        git_cl = GitCL(MockHost())
+        git_cl.fetch_try_results = lambda: [
+            {
+                'builder_name': 'builder-b',
+                'status': 'COMPLETED',
+                'result': 'SUCCESS',
+                'url': 'http://build.chromium.org/p/master/builders/some-builder/builds/100',
+            },
+            {
+                'builder_name': 'builder-b',
+                'status': 'COMPLETED',
+                'result': 'SUCCESS',
+                'url': 'http://build.chromium.org/p/master/builders/some-builder/builds/90',
+            },
+            {
+                'builder_name': 'builder-a',
+                'status': 'SCHEDULED',
+                'result': None,
+                'url': None,
+            },
+            {
+                'builder_name': 'builder-c',
+                'status': 'COMPLETED',
+                'result': 'SUCCESS',
+                'url': 'http://build.chromium.org/p/master/builders/some-builder/builds/123',
+            },
+        ]
+        self.assertEqual(
+            git_cl.latest_try_jobs(['builder-a', 'builder-b']),
+            [Build('builder-a'), Build('builder-b', 100)])
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/common/net/rietveld.py b/third_party/WebKit/Tools/Scripts/webkitpy/common/net/rietveld.py
index abc9c5d6..c1438fa 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/common/net/rietveld.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/common/net/rietveld.py
@@ -8,7 +8,7 @@
 import logging
 import urllib2
 
-from webkitpy.common.net.buildbot import Build
+from webkitpy.common.net.buildbot import Build, filter_latest_builds
 
 _log = logging.getLogger(__name__)
 
@@ -55,26 +55,7 @@
         if builder_names is not None:
             builds = [b for b in builds if b.builder_name in builder_names]
 
-        return self._filter_latest_builds(builds)
-
-    def _filter_latest_builds(self, builds):
-        """Filters out a collection of Build objects to include only the latest for each builder.
-
-        Args:
-            jobs: A list of Build objects.
-
-        Returns:
-            A list of Build objects; only one Build object per builder name. If there are only
-            Builds with no build number, then one is kept; if there are Builds with build numbers,
-            then the one with the highest build number is kept.
-        """
-        builder_to_latest_build = {}
-        for build in builds:
-            if build.builder_name not in builder_to_latest_build:
-                builder_to_latest_build[build.builder_name] = build
-            elif build.build_number > builder_to_latest_build[build.builder_name].build_number:
-                builder_to_latest_build[build.builder_name] = build
-        return sorted(builder_to_latest_build.values())
+        return filter_latest_builds(builds)
 
     def changed_files(self, issue_number):
         """Lists the files included in a CL that are changed but not deleted.
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/common/net/rietveld_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/common/net/rietveld_unittest.py
index 2755169..8f39a5b 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/common/net/rietveld_unittest.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/common/net/rietveld_unittest.py
@@ -93,27 +93,3 @@
     def test_changed_files_no_results(self):
         rietveld = Rietveld(self.mock_web())
         self.assertIsNone(rietveld.changed_files(11113333))
-
-    # Testing protected methods - pylint: disable=protected-access
-
-    def test_filter_latest_jobs_empty(self):
-        rietveld = Rietveld(self.mock_web())
-        self.assertEqual(rietveld._filter_latest_builds([]), [])
-
-    def test_filter_latest_jobs_higher_build_first(self):
-        rietveld = Rietveld(self.mock_web())
-        self.assertEqual(
-            rietveld._filter_latest_builds([Build('foo', 5), Build('foo', 3), Build('bar', 5)]),
-            [Build('bar', 5), Build('foo', 5)])
-
-    def test_filter_latest_jobs_higher_build_last(self):
-        rietveld = Rietveld(self.mock_web())
-        self.assertEqual(
-            rietveld._filter_latest_builds([Build('foo', 3), Build('bar', 5), Build('foo', 5)]),
-            [Build('bar', 5), Build('foo', 5)])
-
-    def test_filter_latest_jobs_no_build_number(self):
-        rietveld = Rietveld(self.mock_web())
-        self.assertEqual(
-            rietveld._filter_latest_builds([Build('foo', 3), Build('bar'), Build('bar')]),
-            [Build('bar'), Build('foo', 3)])
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/rebaseline_cl.py b/third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/rebaseline_cl.py
index 8a1401aa..e536cea 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/rebaseline_cl.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/rebaseline_cl.py
@@ -64,9 +64,11 @@
         if not issue_number:
             return 1
 
-        # TODO(qyearsley): Replace this with git cl try-results to remove
-        # dependency on Rietveld. See crbug.com/671684.
-        builds = self.rietveld.latest_try_jobs(issue_number, self._try_bots())
+        # TODO(qyearsley): Remove dependency on Rietveld. See crbug.com/671684.
+        if options.issue:
+            builds = self.rietveld.latest_try_jobs(issue_number, self._try_bots())
+        else:
+            builds = self.git_cl().latest_try_jobs(self._try_bots())
 
         if options.trigger_jobs:
             if self.trigger_jobs_for_missing_builds(builds):
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/rebaseline_cl_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/rebaseline_cl_unittest.py
index 6c9b3d7..df60e54 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/rebaseline_cl_unittest.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/rebaseline_cl_unittest.py
@@ -176,6 +176,7 @@
     def test_execute_with_issue_number_from_branch(self):
         git_cl = GitCL(self.tool)
         git_cl.get_issue_number = lambda: '11112222'
+        git_cl.latest_try_jobs = lambda _: [Build('MOCK Try Win', 5000)]
         self.command.git_cl = lambda: git_cl
         return_code = self.command.execute(self.command_options(), [], self.tool)
         self.assertEqual(return_code, 0)
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_expectations_updater.py b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_expectations_updater.py
index 9d1c26a..c495301 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_expectations_updater.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_expectations_updater.py
@@ -250,7 +250,7 @@
             ['BUG_URL [PLATFORM(S)] TEST_NAME [EXPECTATION(S)]']
         """
         line_list = []
-        for test_name, port_results in merged_results.iteritems():
+        for test_name, port_results in sorted(merged_results.iteritems()):
             for port_names in sorted(port_results):
                 if test_name.startswith('external'):
                     line_parts = [port_results[port_names]['bug']]
@@ -333,7 +333,7 @@
             if version_specifiers.issubset(specifiers):
                 specifiers -= version_specifiers
                 specifiers.add(macro_specifier)
-        if specifiers == set(configuration_specifier_macros):
+        if specifiers == {macro.lower() for macro in configuration_specifier_macros.keys()}:
             return []
         return sorted(specifier.capitalize() for specifier in specifiers)
 
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_expectations_updater_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_expectations_updater_unittest.py
index b859ae1..80e88220 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_expectations_updater_unittest.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_expectations_updater_unittest.py
@@ -150,21 +150,24 @@
         self.assertEqual(updater.create_line_list(results), [])
 
     def test_create_line_list_new_tests(self):
-        # In this example, there are unexpected non-fail results in w3c tests.
+        # In this example, there are three unexpected results. The new
+        # test expectation lines are sorted by test, and then specifier.
         updater = WPTExpectationsUpdater(self.mock_host())
         results = {
+            'external/fake/test/zzzz.html': {
+                'test-mac-mac10.10': {'expected': 'PASS', 'actual': 'FAIL', 'bug': 'crbug.com/test'},
+            },
             'external/fake/test/path.html': {
                 'test-linux-trusty': {'expected': 'FAIL', 'actual': 'PASS', 'bug': 'crbug.com/test'},
-                'test-mac-mac10.10': {'expected': 'FAIL', 'actual': 'PASS', 'bug': 'crbug.com/test'},
                 'test-mac-mac10.11': {'expected': 'FAIL', 'actual': 'TIMEOUT', 'bug': 'crbug.com/test'},
-            }
+            },
         }
         self.assertEqual(
             updater.create_line_list(results),
             [
                 'crbug.com/test [ Linux ] external/fake/test/path.html [ Pass ]',
-                'crbug.com/test [ Mac10.10 ] external/fake/test/path.html [ Pass ]',
                 'crbug.com/test [ Mac10.11 ] external/fake/test/path.html [ Timeout ]',
+                'crbug.com/test [ Mac10.10 ] external/fake/test/zzzz.html [ Failure ]',
             ])
 
     def test_specifier_part(self):
@@ -183,13 +186,14 @@
         macros = {
             'mac': ['Mac10.10', 'mac10.11'],
             'win': ['Win7', 'win10'],
-            'linux': ['Trusty'],
+            'Linux': ['TRUSTY'],
         }
         self.assertEqual(WPTExpectationsUpdater.simplify_specifiers(['mac10.10', 'mac10.11'], macros), ['Mac'])
         self.assertEqual(WPTExpectationsUpdater.simplify_specifiers(['Mac10.10', 'Mac10.11', 'Trusty'], macros), ['Linux', 'Mac'])
         self.assertEqual(
             WPTExpectationsUpdater.simplify_specifiers(['Mac10.10', 'Mac10.11', 'Trusty', 'Win7', 'Win10'], macros), [])
         self.assertEqual(WPTExpectationsUpdater.simplify_specifiers(['a', 'b', 'c'], {}), ['A', 'B', 'C'])
+        self.assertEqual(WPTExpectationsUpdater.simplify_specifiers(['Mac', 'Win', 'Linux'], macros), [])
 
     def test_merge_dicts_with_conflict_raise_exception(self):
         updater = WPTExpectationsUpdater(self.mock_host())
diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc
index 7e9fdb64..6b0ecae 100644
--- a/ui/views/widget/widget.cc
+++ b/ui/views/widget/widget.cc
@@ -1309,10 +1309,13 @@
   }
   if (v) {
     v->RequestFocus();
-    // If the request for focus was unsuccessful, fall back to using the first
+    // If the Widget is active (thus allowing its child Views to receive focus),
+    // but the request for focus was unsuccessful, fall back to using the first
     // focusable View instead.
-    if (focus_manager && focus_manager->GetFocusedView() == nullptr)
+    if (focus_manager && focus_manager->GetFocusedView() == nullptr &&
+        IsActive()) {
       focus_manager->AdvanceFocus(false);
+    }
   }
   return !!focus_manager->GetFocusedView();
 }
diff --git a/ui/views/window/dialog_delegate_unittest.cc b/ui/views/window/dialog_delegate_unittest.cc
index bf2a32e..d11cfddd 100644
--- a/ui/views/window/dialog_delegate_unittest.cc
+++ b/ui/views/window/dialog_delegate_unittest.cc
@@ -277,6 +277,44 @@
   EXPECT_EQ(dialog()->input(), dialog()->GetFocusManager()->GetFocusedView());
 }
 
+// A dialog for testing initial focus with only an OK button.
+class InitialFocusTestDialog : public DialogDelegateView {
+ public:
+  InitialFocusTestDialog() {}
+  ~InitialFocusTestDialog() override {}
+
+  views::View* OkButton() { return GetDialogClientView()->ok_button(); }
+
+  // DialogDelegateView overrides:
+  int GetDialogButtons() const override { return ui::DIALOG_BUTTON_OK; }
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(InitialFocusTestDialog);
+};
+
+// If the Widget can't be activated while the initial focus View is requesting
+// focus, test it is still able to receive focus once the Widget is activated.
+TEST_F(DialogTest, InitialFocusWithDeactivatedWidget) {
+  InitialFocusTestDialog* dialog = new InitialFocusTestDialog();
+  Widget* dialog_widget =
+      DialogDelegate::CreateDialogWidget(dialog, GetContext(), nullptr);
+  // Set the initial focus while the Widget is unactivated to prevent the
+  // initially focused View from receiving focus. Use a minimised state here to
+  // prevent the Widget from being activated while this happens.
+  dialog_widget->SetInitialFocus(ui::WindowShowState::SHOW_STATE_MINIMIZED);
+
+  // Nothing should be focused, because the Widget is still deactivated.
+  EXPECT_EQ(nullptr, dialog_widget->GetFocusManager()->GetFocusedView());
+  EXPECT_EQ(dialog->OkButton(),
+            dialog_widget->GetFocusManager()->GetStoredFocusView());
+  dialog_widget->Show();
+  // After activation, the initially focused View should have focus as intended.
+  EXPECT_EQ(dialog->OkButton(),
+            dialog_widget->GetFocusManager()->GetFocusedView());
+  EXPECT_TRUE(dialog->OkButton()->HasFocus());
+  dialog_widget->CloseNow();
+}
+
 // If the initially focused View provided is unfocusable, check the next
 // available focusable View is focused.
 TEST_F(DialogTest, UnfocusableInitialFocus) {
@@ -308,7 +346,7 @@
   dialog_widget->Show();
   EXPECT_TRUE(textfield->HasFocus());
   EXPECT_EQ(textfield, dialog->GetFocusManager()->GetFocusedView());
-  dialog_widget->Close();
+  dialog_widget->CloseNow();
 }
 
 }  // namespace views
