diff --git a/DEPS b/DEPS
index 798b826..6db4ea8 100644
--- a/DEPS
+++ b/DEPS
@@ -74,7 +74,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': '1946aaf15ca0cbed7842f6df8c347284061ef2f9',
+  'skia_revision': 'cad08c855e2373df3f0c53e943bad29dbd371d9c',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
@@ -1009,7 +1009,7 @@
     'action': ['vpython',
                'src/build/get_syzygy_binaries.py',
                '--output-dir=src/third_party/syzygy/binaries',
-               '--revision=190dbfe74c6f5b5913820fa66d9176877924d7c5',
+               '--revision=8164b24ebde9c5649c9a09e88a7fc0b0fcbd1bc5',
                '--overwrite',
                '--copy-dia-binaries',
     ],
diff --git a/ash/public/cpp/ash_switches.h b/ash/public/cpp/ash_switches.h
index bce524da..760e9627 100644
--- a/ash/public/cpp/ash_switches.h
+++ b/ash/public/cpp/ash_switches.h
@@ -60,11 +60,6 @@
 ASH_PUBLIC_EXPORT extern const char kShowTaps[];
 ASH_PUBLIC_EXPORT extern const char kShowViewsLogin[];
 ASH_PUBLIC_EXPORT extern const char kShowWebUiLock[];
-ASH_PUBLIC_EXPORT extern const char kSpuriousPowerButtonWindow[];
-ASH_PUBLIC_EXPORT extern const char kSpuriousPowerButtonAccelCount[];
-ASH_PUBLIC_EXPORT extern const char kSpuriousPowerButtonScreenAccel[];
-ASH_PUBLIC_EXPORT extern const char kSpuriousPowerButtonKeyboardAccel[];
-ASH_PUBLIC_EXPORT extern const char kSpuriousPowerButtonLidAngleChange[];
 ASH_PUBLIC_EXPORT extern const char kTouchscreenUsableWhileScreenOff[];
 ASH_PUBLIC_EXPORT extern const char kUseIMEService[];
 
diff --git a/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc b/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc
index cc80d60..a93b75c 100644
--- a/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc
+++ b/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc
@@ -968,19 +968,16 @@
            TestTimeouts::tiny_timeout();
   }
 
-  // Waits up to some amount of time until |worker_pool_|'s worker capacity
-  // reaches |expected_worker_capacity|.
-  void ExpectWorkerCapacityAfterDelay(size_t expected_worker_capacity) {
-    constexpr int kMaxAttempts = 4;
-    for (int i = 0;
-         i < kMaxAttempts && worker_pool_->GetWorkerCapacityForTesting() !=
-                                 expected_worker_capacity;
-         ++i) {
+  // Waits indefinitely, until |worker_pool_|'s worker capacity increases to
+  // |expected_worker_capacity|.
+  void ExpectWorkerCapacityIncreasesTo(size_t expected_worker_capacity) {
+    size_t capacity = worker_pool_->GetWorkerCapacityForTesting();
+    while (capacity != expected_worker_capacity) {
       PlatformThread::Sleep(GetWorkerCapacityChangeSleepTime());
+      size_t new_capacity = worker_pool_->GetWorkerCapacityForTesting();
+      ASSERT_GE(new_capacity, capacity);
+      capacity = new_capacity;
     }
-
-    EXPECT_EQ(worker_pool_->GetWorkerCapacityForTesting(),
-              expected_worker_capacity);
   }
 
   // Unblocks tasks posted by SaturateWithBlockingTasks().
@@ -1004,7 +1001,7 @@
 
   SaturateWithBlockingTasks(GetParam());
   if (GetParam().behaves_as == BlockingType::MAY_BLOCK)
-    ExpectWorkerCapacityAfterDelay(2 * kNumWorkersInWorkerPool);
+    ExpectWorkerCapacityIncreasesTo(2 * kNumWorkersInWorkerPool);
   // A range of possible number of workers is accepted because of
   // crbug.com/757897.
   EXPECT_GE(worker_pool_->NumberOfWorkersForTesting(),
@@ -1100,7 +1097,7 @@
   // tasks we just posted.
   thread_can_block.Signal();
   if (GetParam().behaves_as == BlockingType::MAY_BLOCK)
-    ExpectWorkerCapacityAfterDelay(2 * kNumWorkersInWorkerPool);
+    ExpectWorkerCapacityIncreasesTo(2 * kNumWorkersInWorkerPool);
 
   // Should not block forever.
   extra_thread_running.Wait();
@@ -1119,7 +1116,7 @@
 
   SaturateWithBlockingTasks(GetParam());
   if (GetParam().behaves_as == BlockingType::MAY_BLOCK)
-    ExpectWorkerCapacityAfterDelay(2 * kNumWorkersInWorkerPool);
+    ExpectWorkerCapacityIncreasesTo(2 * kNumWorkersInWorkerPool);
   EXPECT_EQ(worker_pool_->GetWorkerCapacityForTesting(),
             2 * kNumWorkersInWorkerPool);
   // A range of possible number of workers is accepted because of
@@ -1303,7 +1300,7 @@
           Unretained(&did_instantiate_will_block), Unretained(&can_return)));
 
   // After a short delay, worker capacity should be incremented.
-  ExpectWorkerCapacityAfterDelay(kNumWorkersInWorkerPool + 1);
+  ExpectWorkerCapacityIncreasesTo(kNumWorkersInWorkerPool + 1);
 
   // Wait until the task instantiates a WILL_BLOCK ScopedBlockingCall.
   can_instantiate_will_block.Signal();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/survey/ChromeHomeSurveyController.java b/chrome/android/java/src/org/chromium/chrome/browser/survey/ChromeHomeSurveyController.java
index 4b3619e..a2cd43e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/survey/ChromeHomeSurveyController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/survey/ChromeHomeSurveyController.java
@@ -358,9 +358,14 @@
 
     /** Logs in {@link SharedPreferences} that the info bar was displayed. */
     private void recordInfoBarDisplayed() {
+        // This can be called multiple times e.g. by mLoggingHandler & onSurveyInfoBarClosed().
+        // Return early to allow only one call to this method (http://crbug.com/791076).
+        if (mSurveyInfoBarTab == null) return;
+
         if (mSurveyInfoBarTab.getInfoBarContainer() != null) {
             mSurveyInfoBarTab.getInfoBarContainer().removeAnimationListener(this);
         }
+
         mLoggingHandler.removeCallbacksAndMessages(null);
 
         SharedPreferences sharedPreferences = ContextUtils.getAppSharedPreferences();
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 112beaed..4ae3b24 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -2363,7 +2363,7 @@
   // to indicate that we don't want SSLErrorHandler to take the committed
   // interstitials code path.
   SSLErrorHandler::HandleSSLError(
-      web_contents, cert_error, ssl_info, request_url, strict_enforcement,
+      web_contents, cert_error, ssl_info, request_url,
       expired_previous_decision,
       std::make_unique<CertificateReportingServiceCertReporter>(web_contents),
       callback, SSLErrorHandler::BlockingPageReadyCallback());
diff --git a/chrome/browser/referrer_policy_browsertest.cc b/chrome/browser/referrer_policy_browsertest.cc
index 395e78b..584c7853 100644
--- a/chrome/browser/referrer_policy_browsertest.cc
+++ b/chrome/browser/referrer_policy_browsertest.cc
@@ -8,7 +8,6 @@
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/app/chrome_command_ids.h"
 #include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/net/url_request_mock_util.h"
 #include "chrome/browser/renderer_context_menu/render_view_context_menu.h"
 #include "chrome/browser/renderer_context_menu/render_view_context_menu_browsertest_util.h"
 #include "chrome/browser/ui/browser.h"
@@ -27,19 +26,17 @@
 #include "content/public/browser/web_contents.h"
 #include "content/public/common/content_switches.h"
 #include "content/public/test/browser_test_utils.h"
-#include "net/test/url_request/url_request_mock_http_job.h"
 #include "third_party/WebKit/public/platform/WebInputEvent.h"
 
 class ReferrerPolicyTest : public InProcessBrowserTest {
  public:
-  ReferrerPolicyTest() {}
-  ~ReferrerPolicyTest() override {}
-
-  void SetUpOnMainThread() override {
-    content::BrowserThread::PostTask(
-        content::BrowserThread::IO, FROM_HERE,
-        base::BindOnce(&chrome_browser_net::SetUrlRequestMocksEnabled, true));
+  ReferrerPolicyTest() : https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {
+    https_server_.AddDefaultHandlers(
+        base::FilePath(FILE_PATH_LITERAL("chrome/test/data")));
+    EXPECT_TRUE(embedded_test_server()->Start());
+    EXPECT_TRUE(https_server_.Start());
   }
+  ~ReferrerPolicyTest() override {}
 
  protected:
   enum ExpectedReferrer {
@@ -117,21 +114,6 @@
     SERVER_REDIRECT_FROM_HTTP_TO_HTTPS
   };
 
-  std::string RedirectTypeToString(RedirectType redirect) {
-    switch (redirect) {
-      case NO_REDIRECT:
-        return "none";
-      case SERVER_REDIRECT_FROM_HTTPS_TO_HTTP:
-        return "https2http";
-      case SERVER_REDIRECT_FROM_HTTP_TO_HTTP:
-        return "http2http";
-      case SERVER_REDIRECT_FROM_HTTP_TO_HTTPS:
-        return "http2https";
-    }
-    NOTREACHED();
-    return "";
-  }
-
   // Navigates from a page with a given |referrer_policy| and checks that the
   // reported referrer matches the expectation.
   // Parameters:
@@ -155,17 +137,45 @@
                        blink::WebMouseEvent::Button button,
                        ExpectedReferrer expected_referrer,
                        blink::WebReferrerPolicy expected_referrer_policy) {
+    GURL redirect_url;
+    switch (redirect) {
+      case NO_REDIRECT:
+        redirect_url = embedded_test_server()->GetURL(
+            "/referrer_policy/referrer-policy-log.html");
+        break;
+      case SERVER_REDIRECT_FROM_HTTPS_TO_HTTP:
+        redirect_url = https_server_.GetURL(
+            std::string("/server-redirect?") +
+            embedded_test_server()
+                ->GetURL("/referrer_policy/referrer-policy-log.html")
+                .spec());
+        break;
+      case SERVER_REDIRECT_FROM_HTTP_TO_HTTP:
+        redirect_url = embedded_test_server()->GetURL(
+            std::string("/server-redirect?") +
+            embedded_test_server()
+                ->GetURL("/referrer_policy/referrer-policy-log.html")
+                .spec());
+        break;
+      case SERVER_REDIRECT_FROM_HTTP_TO_HTTPS:
+        redirect_url = embedded_test_server()->GetURL(
+            std::string("/server-redirect?") +
+            https_server_.GetURL("/referrer_policy/referrer-policy-log.html")
+                .spec());
+        break;
+    }
+
     std::string relative_url =
-        std::string("referrer_policy/referrer-policy-start.html?") +
+        std::string("/referrer_policy/referrer-policy-start.html?") +
         "policy=" + ReferrerPolicyToString(referrer_policy) +
-        "&redirect=" + RedirectTypeToString(redirect) + "&link=" +
+        "&redirect=" + redirect_url.spec() + "&link=" +
         (button == blink::WebMouseEvent::Button::kNoButton ? "false" : "true") +
         "&target=" + (link_type == LINK_WITH_TARGET_BLANK ? "_blank" : "");
 
-    const GURL start_url =
-        (start_protocol == START_ON_HTTPS)
-            ? net::URLRequestMockHTTPJob::GetMockHttpsUrl(relative_url)
-            : net::URLRequestMockHTTPJob::GetMockUrl(relative_url);
+    auto* start_test_server = start_protocol == START_ON_HTTPS
+                                  ? &https_server_
+                                  : embedded_test_server();
+    const GURL start_url = start_test_server->GetURL(relative_url);
 
     ui_test_utils::WindowedTabAddedNotificationObserver tab_added_observer(
         content::NotificationService::AllSources());
@@ -225,6 +235,8 @@
                            disposition, button, expected_referrer,
                            referrer_policy);
   }
+
+  net::EmbeddedTestServer https_server_;
 };
 
 class ReferrerPolicyWithReduceReferrerGranularityFlagTest
@@ -467,8 +479,7 @@
       blink::WebMouseEvent::Button::kLeft, EXPECT_ORIGIN_AS_REFERRER);
 
   // Navigate to C.
-  ui_test_utils::NavigateToURL(
-      browser(), net::URLRequestMockHTTPJob::GetMockUrl(std::string()));
+  ui_test_utils::NavigateToURL(browser(), embedded_test_server()->GetURL("/"));
 
   base::string16 expected_title =
       GetExpectedTitle(start_url, EXPECT_ORIGIN_AS_REFERRER);
@@ -544,8 +555,16 @@
 
   // Load a page that loads an iframe.
   ui_test_utils::NavigateToURL(
-      browser(), net::URLRequestMockHTTPJob::GetMockHttpsUrl(std::string(
-                     "referrer_policy/referrer-policy-iframe.html")));
+      browser(),
+      https_server_.GetURL("/referrer_policy/referrer-policy-iframe.html"));
+  EXPECT_TRUE(content::ExecuteScript(
+      tab,
+      std::string("var frame = document.createElement('iframe');frame.src ='") +
+          embedded_test_server()
+              ->GetURL("/referrer_policy/referrer-policy-log.html")
+              .spec() +
+          "';frame.onload = function() { document.title = 'loaded'; };" +
+          "document.body.appendChild(frame)"));
   EXPECT_EQ(expected_title, title_watcher->WaitAndGetTitle());
 
   // Verify that the referrer policy was honored and the main page's origin was
@@ -557,10 +576,7 @@
       frame,
       "window.domAutomationController.send(document.title)",
       &title));
-  EXPECT_EQ(
-      "Referrer is " +
-          net::URLRequestMockHTTPJob::GetMockHttpsUrl(std::string()).spec(),
-      title);
+  EXPECT_EQ("Referrer is " + https_server_.GetURL("/").spec(), title);
 
   // Reload the iframe.
   expected_title = base::ASCIIToUTF16("reset");
@@ -578,10 +594,11 @@
       frame,
       "window.domAutomationController.send(document.title)",
       &title));
-  EXPECT_EQ("Referrer is " +
-                net::URLRequestMockHTTPJob::GetMockUrl(
-                    "referrer_policy/referrer-policy-log.html").spec(),
-            title);
+  EXPECT_EQ(
+      "Referrer is " + embedded_test_server()
+                           ->GetURL("/referrer_policy/referrer-policy-log.html")
+                           .spec(),
+      title);
 }
 
 // Origin When Cross-Origin
diff --git a/chrome/browser/ssl/ssl_error_handler.cc b/chrome/browser/ssl/ssl_error_handler.cc
index fce9bcd6..99139ef 100644
--- a/chrome/browser/ssl/ssl_error_handler.cc
+++ b/chrome/browser/ssl/ssl_error_handler.cc
@@ -580,7 +580,6 @@
     int cert_error,
     const net::SSLInfo& ssl_info,
     const GURL& request_url,
-    bool should_ssl_errors_be_fatal,
     bool expired_previous_decision,
     std::unique_ptr<SSLCertReporter> ssl_cert_reporter,
     const base::Callback<void(content::CertificateRequestResultType)>&
@@ -600,7 +599,7 @@
   bool is_superfish =
       base::FeatureList::IsEnabled(kSuperfishInterstitial) && is_superfish_cert;
   int options_mask = CalculateOptionsMask(
-      cert_error, hard_override_disabled, should_ssl_errors_be_fatal,
+      cert_error, hard_override_disabled, ssl_info.is_fatal_cert_error,
       is_superfish, expired_previous_decision);
 
   SSLErrorHandler* error_handler = new SSLErrorHandler(
diff --git a/chrome/browser/ssl/ssl_error_handler.h b/chrome/browser/ssl/ssl_error_handler.h
index a7a110cb..1c2fe324 100644
--- a/chrome/browser/ssl/ssl_error_handler.h
+++ b/chrome/browser/ssl/ssl_error_handler.h
@@ -133,7 +133,6 @@
       int cert_error,
       const net::SSLInfo& ssl_info,
       const GURL& request_url,
-      bool should_ssl_errors_be_fatal,
       bool expired_previous_decision,
       std::unique_ptr<SSLCertReporter> ssl_cert_reporter,
       const base::Callback<void(content::CertificateRequestResultType)>&
diff --git a/chrome/browser/ssl/ssl_error_navigation_throttle.cc b/chrome/browser/ssl/ssl_error_navigation_throttle.cc
index d99e671..4202e53 100644
--- a/chrome/browser/ssl/ssl_error_navigation_throttle.cc
+++ b/chrome/browser/ssl/ssl_error_navigation_throttle.cc
@@ -49,8 +49,7 @@
       base::BindOnce(
           std::move(handle_ssl_error_callback_), handle->GetWebContents(),
           net::MapCertStatusToNetError(cert_status), handle->GetSSLInfo(),
-          handle->GetURL(), handle->ShouldSSLErrorsBeFatal(), false,
-          std::move(ssl_cert_reporter_),
+          handle->GetURL(), false, std::move(ssl_cert_reporter_),
           base::Callback<void(content::CertificateRequestResultType)>(),
           base::BindOnce(&SSLErrorNavigationThrottle::ShowInterstitial,
                          weak_ptr_factory_.GetWeakPtr())));
diff --git a/chrome/browser/ssl/ssl_error_navigation_throttle.h b/chrome/browser/ssl/ssl_error_navigation_throttle.h
index 44de848..9c29fd3 100644
--- a/chrome/browser/ssl/ssl_error_navigation_throttle.h
+++ b/chrome/browser/ssl/ssl_error_navigation_throttle.h
@@ -34,7 +34,6 @@
       int cert_error,
       const net::SSLInfo& ssl_info,
       const GURL& request_url,
-      bool should_ssl_errors_be_fatal,
       bool expired_previous_decision,
       std::unique_ptr<SSLCertReporter> ssl_cert_reporter,
       const base::Callback<void(content::CertificateRequestResultType)>&
diff --git a/chrome/browser/ssl/ssl_error_navigation_throttle_unittest.cc b/chrome/browser/ssl/ssl_error_navigation_throttle_unittest.cc
index 3e3a280..2f241f9 100644
--- a/chrome/browser/ssl/ssl_error_navigation_throttle_unittest.cc
+++ b/chrome/browser/ssl/ssl_error_navigation_throttle_unittest.cc
@@ -30,7 +30,6 @@
     int cert_error,
     const net::SSLInfo& ssl_info,
     const GURL& request_url,
-    bool should_ssl_errors_be_fatal,
     bool expired_previous_decision,
     std::unique_ptr<SSLCertReporter> ssl_cert_reporter,
     const base::Callback<void(content::CertificateRequestResultType)>&
diff --git a/chrome/browser/ui/cocoa/tabs/tab_strip_controller.h b/chrome/browser/ui/cocoa/tabs/tab_strip_controller.h
index 78c8b993a..fa892e0 100644
--- a/chrome/browser/ui/cocoa/tabs/tab_strip_controller.h
+++ b/chrome/browser/ui/cocoa/tabs/tab_strip_controller.h
@@ -158,6 +158,9 @@
   // added in fullscreen in 10.10+.
   base::scoped_nsobject<CustomWindowControlsView> customWindowControls_;
   base::scoped_nsobject<CrTrackingArea> customWindowControlsTrackingArea_;
+
+  // The set stores the WebContens that were hiding their throbbers.
+  std::set<content::WebContents*> wasHidingThrobberSet_;
 }
 
 @property(nonatomic) CGFloat leadingIndentForControls;
diff --git a/chrome/browser/ui/cocoa/tabs/tab_strip_controller.mm b/chrome/browser/ui/cocoa/tabs/tab_strip_controller.mm
index d86c8862..7e528bf 100644
--- a/chrome/browser/ui/cocoa/tabs/tab_strip_controller.mm
+++ b/chrome/browser/ui/cocoa/tabs/tab_strip_controller.mm
@@ -18,6 +18,7 @@
 #include "base/macros.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/metrics/user_metrics.h"
+#include "base/stl_util.h"
 #include "base/strings/sys_string_conversions.h"
 #include "chrome/app/chrome_command_ids.h"
 #include "chrome/browser/autocomplete/autocomplete_classifier_factory.h"
@@ -1324,6 +1325,13 @@
   [delegate_ onTabInsertedWithContents:contents inForeground:inForeground];
 }
 
+// Called when a notification is received from the model to close the tab with
+// the WebContents.
+- (void)tabClosingWithContents:(content::WebContents*)contents
+                       atIndex:(NSInteger)index {
+  wasHidingThrobberSet_.erase(contents);
+}
+
 // Called before |contents| is deactivated.
 - (void)tabDeactivatedWithContents:(content::WebContents*)contents {
   contents->StoreFocus();
@@ -1647,8 +1655,11 @@
       [tabController
           setIconImage:[self iconImageForContents:contents atIndex:modelIndex]];
     }
-  } else if (newState == kTabDone || oldState != newState ||
+    wasHidingThrobberSet_.insert(contents);
+  } else if (base::ContainsKey(wasHidingThrobberSet_, contents) ||
+             newState == kTabDone || oldState != newState ||
              oldHasIcon != newHasIcon) {
+    wasHidingThrobberSet_.erase(contents);
     if (newHasIcon) {
       if (newState == kTabDone) {
         [tabController setIconImage:[self iconImageForContents:contents
diff --git a/chrome/browser/ui/views/content_setting_bubble_contents.cc b/chrome/browser/ui/views/content_setting_bubble_contents.cc
index 184e9b9..71446ce0 100644
--- a/chrome/browser/ui/views/content_setting_bubble_contents.cc
+++ b/chrome/browser/ui/views/content_setting_bubble_contents.cc
@@ -329,6 +329,20 @@
   } else {
     preferred_size.set_width(std::min(preferred_width, kMaxContentsWidth));
   }
+
+  // These bubbles should all be the "small" dialog width, but only when in
+  // Harmony mode.
+  ChromeLayoutProvider* provider = ChromeLayoutProvider::Get();
+  if (provider->IsHarmonyMode()) {
+    // Subtract out this dialog's margins. The margins are imposed by
+    // DialogClientView around this view, so this view's width plus the width of
+    // these margins must equal the desired width, which is
+    // GetSnappedDialogWidth(0).
+    preferred_size.set_width(provider->GetSnappedDialogWidth(0) -
+                             margins().width());
+    preferred_size.set_height(GetHeightForWidth(preferred_size.width()));
+  }
+
   return preferred_size;
 }
 
@@ -437,6 +451,7 @@
       views::RadioButton* radio = new views::RadioButton(*i, 0);
       radio->SetEnabled(bubble_content.radio_group_enabled);
       radio->set_listener(this);
+      radio->SetMultiLine(true);
       radio_group_.push_back(radio);
       layout->StartRow(0, kIndentedSingleColumnSetId);
       layout->AddView(radio);
diff --git a/chrome/test/data/referrer_policy/redirect-to-http-log b/chrome/test/data/referrer_policy/redirect-to-http-log
deleted file mode 100644
index e69de29..0000000
--- a/chrome/test/data/referrer_policy/redirect-to-http-log
+++ /dev/null
diff --git a/chrome/test/data/referrer_policy/redirect-to-http-log.mock-http-headers b/chrome/test/data/referrer_policy/redirect-to-http-log.mock-http-headers
deleted file mode 100644
index 20b4372..0000000
--- a/chrome/test/data/referrer_policy/redirect-to-http-log.mock-http-headers
+++ /dev/null
@@ -1,3 +0,0 @@
-HTTP/1.1 301 Moved permanently
-Location: http://mock.http/referrer_policy/referrer-policy-log.html
-
diff --git a/chrome/test/data/referrer_policy/redirect-to-https-log b/chrome/test/data/referrer_policy/redirect-to-https-log
deleted file mode 100644
index e69de29..0000000
--- a/chrome/test/data/referrer_policy/redirect-to-https-log
+++ /dev/null
diff --git a/chrome/test/data/referrer_policy/redirect-to-https-log.mock-http-headers b/chrome/test/data/referrer_policy/redirect-to-https-log.mock-http-headers
deleted file mode 100644
index 22f078c..0000000
--- a/chrome/test/data/referrer_policy/redirect-to-https-log.mock-http-headers
+++ /dev/null
@@ -1,3 +0,0 @@
-HTTP/1.1 301 Moved permanently
-Location: https://mock.http/referrer_policy/referrer-policy-log.html
-
diff --git a/chrome/test/data/referrer_policy/referrer-policy-iframe.html b/chrome/test/data/referrer_policy/referrer-policy-iframe.html
index 1afba24..8261b980 100644
--- a/chrome/test/data/referrer_policy/referrer-policy-iframe.html
+++ b/chrome/test/data/referrer_policy/referrer-policy-iframe.html
@@ -4,11 +4,5 @@
 <meta name="referrer" content="origin" />
 </head>
 <body>
-<script>
-var frame = document.createElement("iframe");
-frame.src = "http://mock.http/referrer_policy/referrer-policy-log.html";
-frame.onload = function() { document.title = "loaded"; };
-document.body.appendChild(frame);
-</script>
 </body>
 </html>
diff --git a/chrome/test/data/referrer_policy/referrer-policy-start.html b/chrome/test/data/referrer_policy/referrer-policy-start.html
index c7374034..a6139aa 100644
--- a/chrome/test/data/referrer_policy/referrer-policy-start.html
+++ b/chrome/test/data/referrer_policy/referrer-policy-start.html
@@ -22,20 +22,9 @@
     document.head.appendChild(meta);
   }
 
-  var destination;
+  var destination = matches[kRedirect];
   var redirectMatches;
 
-  if (matches[kRedirect] == "none") {
-    destination = "http://mock.http/referrer_policy/referrer-policy-log.html";
-  } else if (redirectMatches = /^(https?)2(https?)$/.exec(matches[kRedirect])) {
-    destination =
-      redirectMatches[1] +
-      "://mock.http/referrer_policy/redirect-to-" +
-      redirectMatches[2] + "-log";
-  } else {
-    destination = matches[kRedirect];
-  }
-
   if (matches[kLink] == "true") {
     var link = document.createElement("a");
     link.innerText = "link";
diff --git a/components/search_provider_logos/google_logo_api.cc b/components/search_provider_logos/google_logo_api.cc
index 70b9b75..d85ad36 100644
--- a/components/search_provider_logos/google_logo_api.cc
+++ b/components/search_provider_logos/google_logo_api.cc
@@ -181,6 +181,7 @@
   }
 
   const bool is_animated = (logo->metadata.type == LogoType::ANIMATED);
+  const bool is_interactive = (logo->metadata.type == LogoType::INTERACTIVE);
 
   // Check if the main image is animated.
   if (is_animated) {
@@ -235,6 +236,15 @@
 
   ddljson->GetString("fingerprint", &logo->metadata.fingerprint);
 
+  if (is_interactive) {
+    std::string behavior;
+    if (ddljson->GetString("launch_interactive_behavior", &behavior) &&
+        (behavior == "NEW_WINDOW")) {
+      logo->metadata.type = LogoType::SIMPLE;
+      logo->metadata.on_click_url = logo->metadata.full_page_url;
+    }
+  }
+
   base::TimeDelta time_to_live;
   // The JSON doesn't guarantee the number to fit into an int.
   double ttl_ms = 0;  // Expires immediately if the parameter is missing.
diff --git a/components/search_provider_logos/google_logo_api_unittest.cc b/components/search_provider_logos/google_logo_api_unittest.cc
index 5906b35..8bffa8a 100644
--- a/components/search_provider_logos/google_logo_api_unittest.cc
+++ b/components/search_provider_logos/google_logo_api_unittest.cc
@@ -226,6 +226,32 @@
   EXPECT_EQ(LogoType::INTERACTIVE, logo->metadata.type);
 }
 
+TEST(GoogleNewLogoApiTest, ParsesInteractiveDoodleWithNewWindowAsSimple) {
+  const GURL base_url("https://base.doo/");
+  // Note: The base64 encoding of "abc" is "YWJj".
+  const std::string json = R"json()]}'
+    {
+      "ddljson": {
+        "doodle_type": "INTERACTIVE",
+        "target_url": "/search?q=interactive",
+        "fullpage_interactive_url": "/play",
+        "launch_interactive_behavior": "NEW_WINDOW",
+        "data_uri": "data:image/png;base64,YWJj"
+      }
+    })json";
+
+  bool failed = false;
+  std::unique_ptr<EncodedLogo> logo = ParseDoodleLogoResponse(
+      base_url, std::make_unique<std::string>(json), base::Time(), &failed);
+
+  ASSERT_FALSE(failed);
+  ASSERT_TRUE(logo);
+  EXPECT_EQ(LogoType::SIMPLE, logo->metadata.type);
+  EXPECT_EQ(GURL("https://base.doo/play"), logo->metadata.on_click_url);
+  EXPECT_EQ(GURL("https://base.doo/play"), logo->metadata.full_page_url);
+  EXPECT_EQ("abc", logo->encoded_image->data());
+}
+
 TEST(GoogleNewLogoApiTest, ParsesCapturedApiResult) {
   const GURL base_url("https://base.doo/");
 
diff --git a/content/browser/frame_host/navigation_handle_impl.cc b/content/browser/frame_host/navigation_handle_impl.cc
index b6000b9..b8faea8 100644
--- a/content/browser/frame_host/navigation_handle_impl.cc
+++ b/content/browser/frame_host/navigation_handle_impl.cc
@@ -109,7 +109,6 @@
       should_update_history_(false),
       subframe_entry_committed_(false),
       connection_info_(net::HttpResponseInfo::CONNECTION_INFO_UNKNOWN),
-      should_ssl_errors_be_fatal_(false),
       original_url_(url),
       state_(INITIAL),
       is_transferring_(false),
@@ -347,10 +346,6 @@
   return ssl_info_;
 }
 
-bool NavigationHandleImpl::ShouldSSLErrorsBeFatal() {
-  return should_ssl_errors_be_fatal_;
-}
-
 bool NavigationHandleImpl::HasCommitted() {
   return state_ == DID_COMMIT || state_ == DID_COMMIT_ERROR_PAGE;
 }
@@ -457,8 +452,7 @@
     base::Optional<net::SSLInfo> ssl_info,
     bool should_ssl_errors_be_fatal) {
   NavigationThrottle::ThrottleCheckResult result = NavigationThrottle::DEFER;
-  WillFailRequest(ssl_info, should_ssl_errors_be_fatal,
-                  base::Bind(&UpdateThrottleCheckResult, &result));
+  WillFailRequest(ssl_info, base::Bind(&UpdateThrottleCheckResult, &result));
 
   // Reset the callback to ensure it will not be called later.
   complete_callback_.Reset();
@@ -714,13 +708,12 @@
 
 void NavigationHandleImpl::WillFailRequest(
     base::Optional<net::SSLInfo> ssl_info,
-    bool should_ssl_errors_be_fatal,
     const ThrottleChecksFinishedCallback& callback) {
   TRACE_EVENT_ASYNC_STEP_INTO0("navigation", "NavigationHandle", this,
                                "WillFailRequest");
   if (ssl_info.has_value())
     ssl_info_ = ssl_info.value();
-  should_ssl_errors_be_fatal_ = should_ssl_errors_be_fatal;
+
   complete_callback_ = callback;
   state_ = WILL_FAIL_REQUEST;
 
diff --git a/content/browser/frame_host/navigation_handle_impl.h b/content/browser/frame_host/navigation_handle_impl.h
index fe65b9e9..7d2d9c5 100644
--- a/content/browser/frame_host/navigation_handle_impl.h
+++ b/content/browser/frame_host/navigation_handle_impl.h
@@ -144,7 +144,6 @@
   const net::HttpResponseHeaders* GetResponseHeaders() override;
   net::HttpResponseInfo::ConnectionInfo GetConnectionInfo() override;
   const net::SSLInfo& GetSSLInfo() override;
-  bool ShouldSSLErrorsBeFatal() override;
   void RegisterThrottleForTesting(
       std::unique_ptr<NavigationThrottle> navigation_throttle) override;
   NavigationThrottle::ThrottleCheckResult CallWillStartRequestForTesting(
@@ -313,7 +312,6 @@
   // cancel the navigation (with a custom error code and/or custom error page
   // HTML) or let the failure proceed as normal.
   void WillFailRequest(base::Optional<net::SSLInfo> ssl_info,
-                       bool should_ssl_errors_be_fatal,
                        const ThrottleChecksFinishedCallback& callback);
 
   // Called when the URLRequest has delivered response headers and metadata.
@@ -495,7 +493,6 @@
   scoped_refptr<net::HttpResponseHeaders> response_headers_;
   net::HttpResponseInfo::ConnectionInfo connection_info_;
   net::SSLInfo ssl_info_;
-  bool should_ssl_errors_be_fatal_;
 
   // The original url of the navigation. This may differ from |url_| if the
   // navigation encounters redirects.
diff --git a/content/browser/frame_host/navigation_handle_impl_unittest.cc b/content/browser/frame_host/navigation_handle_impl_unittest.cc
index 5f7e8cb..76869f1 100644
--- a/content/browser/frame_host/navigation_handle_impl_unittest.cc
+++ b/content/browser/frame_host/navigation_handle_impl_unittest.cc
@@ -151,7 +151,7 @@
     // It's safe to use base::Unretained since the NavigationHandle is owned by
     // the NavigationHandleImplTest.
     test_handle_->WillFailRequest(
-        ssl_info, false,
+        ssl_info,
         base::Bind(&NavigationHandleImplTest::UpdateThrottleCheckResult,
                    base::Unretained(this)));
   }
diff --git a/content/browser/frame_host/navigation_request.cc b/content/browser/frame_host/navigation_request.cc
index b3bfdd5..234e2041 100644
--- a/content/browser/frame_host/navigation_request.cc
+++ b/content/browser/frame_host/navigation_request.cc
@@ -460,7 +460,7 @@
     // Don't create a NavigationHandle here to simulate what happened with the
     // old navigation code path (i.e. doesn't fire onPageFinished notification
     // for aborted loads).
-    OnRequestFailed(false, net::ERR_ABORTED, base::nullopt, false);
+    OnRequestFailed(false, net::ERR_ABORTED, base::nullopt);
     return;
   }
 #endif
@@ -475,7 +475,7 @@
     // it by OnRequestFailed().
     CreateNavigationHandle();
     OnRequestFailedInternal(false, net::ERR_BLOCKED_BY_CLIENT, base::nullopt,
-                            false, false);
+                            false);
 
     // DO NOT ADD CODE after this. The previous call to OnRequestFailed has
     // destroyed the NavigationRequest.
@@ -489,8 +489,7 @@
     // Create a navigation handle so that the correct error code can be set on
     // it by OnRequestFailed().
     CreateNavigationHandle();
-    OnRequestFailedInternal(false, net::ERR_ABORTED, base::nullopt, false,
-                            false);
+    OnRequestFailedInternal(false, net::ERR_ABORTED, base::nullopt, false);
 
     // DO NOT ADD CODE after this. The previous call to OnRequestFailed has
     // destroyed the NavigationRequest.
@@ -689,7 +688,7 @@
   // otherwise block.
   if (CheckContentSecurityPolicyFrameSrc(true /* is redirect */) ==
       CONTENT_SECURITY_POLICY_CHECK_FAILED) {
-    OnRequestFailed(false, net::ERR_BLOCKED_BY_CLIENT, base::nullopt, false);
+    OnRequestFailed(false, net::ERR_BLOCKED_BY_CLIENT, base::nullopt);
 
     // DO NOT ADD CODE after this. The previous call to OnRequestFailed has
     // destroyed the NavigationRequest.
@@ -700,7 +699,7 @@
           CredentialedSubresourceCheckResult::BLOCK_REQUEST ||
       CheckLegacyProtocolInSubresource() ==
           LegacyProtocolInSubresourceCheckResult::BLOCK_REQUEST) {
-    OnRequestFailed(false, net::ERR_ABORTED, base::nullopt, false);
+    OnRequestFailed(false, net::ERR_ABORTED, base::nullopt);
 
     // DO NOT ADD CODE after this. The previous call to OnRequestFailed has
     // destroyed the NavigationRequest.
@@ -866,18 +865,15 @@
 void NavigationRequest::OnRequestFailed(
     bool has_stale_copy_in_cache,
     int net_error,
-    const base::Optional<net::SSLInfo>& ssl_info,
-    bool should_ssl_errors_be_fatal) {
+    const base::Optional<net::SSLInfo>& ssl_info) {
   NavigationRequest::OnRequestFailedInternal(has_stale_copy_in_cache, net_error,
-                                             ssl_info,
-                                             should_ssl_errors_be_fatal, false);
+                                             ssl_info, false);
 }
 
 void NavigationRequest::OnRequestFailedInternal(
     bool has_stale_copy_in_cache,
     int net_error,
     const base::Optional<net::SSLInfo>& ssl_info,
-    bool should_ssl_errors_be_fatal,
     bool skip_throttles) {
   DCHECK(state_ == STARTED || state_ == RESPONSE_STARTED);
   // TODO(https://crbug.com/757633): Check that ssl_info.has_value() if
@@ -947,9 +943,8 @@
   } else {
     // Check if the navigation should be allowed to proceed.
     navigation_handle_->WillFailRequest(
-        ssl_info, should_ssl_errors_be_fatal,
-        base::Bind(&NavigationRequest::OnFailureChecksComplete,
-                   base::Unretained(this), render_frame_host));
+        ssl_info, base::Bind(&NavigationRequest::OnFailureChecksComplete,
+                             base::Unretained(this), render_frame_host));
   }
 }
 
@@ -991,7 +986,7 @@
         BrowserThread::UI, FROM_HERE,
         base::BindOnce(&NavigationRequest::OnRequestFailedInternal,
                        weak_factory_.GetWeakPtr(), false,
-                       result.net_error_code(), base::nullopt, false, true));
+                       result.net_error_code(), base::nullopt, true));
 
     // DO NOT ADD CODE after this. The previous call to OnRequestFailed has
     // destroyed the NavigationRequest.
@@ -1088,7 +1083,7 @@
     // TODO(clamy): distinguish between CANCEL and CANCEL_AND_IGNORE if needed.
     DCHECK_EQ(net::ERR_ABORTED, result.net_error_code());
     OnRequestFailedInternal(false, result.net_error_code(), base::nullopt,
-                            false, true);
+                            true);
 
     // DO NOT ADD CODE after this. The previous call to OnRequestFailed has
     // destroyed the NavigationRequest.
@@ -1099,7 +1094,7 @@
       result.action() == NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE) {
     DCHECK_EQ(net::ERR_BLOCKED_BY_CLIENT, result.net_error_code());
     OnRequestFailedInternal(false, result.net_error_code(), base::nullopt,
-                            false, true);
+                            true);
     // DO NOT ADD CODE after this. The previous call to OnRequestFailed has
     // destroyed the NavigationRequest.
     return;
@@ -1146,7 +1141,7 @@
           download_manager->GetNavigationInterceptionCB(
               response_, std::move(handle_), ssl_info_.cert_status,
               frame_tree_node_->frame_tree_node_id()));
-      OnRequestFailed(false, net::ERR_ABORTED, base::nullopt, false);
+      OnRequestFailed(false, net::ERR_ABORTED, base::nullopt);
       return;
     }
     loader_->ProceedWithResponse();
@@ -1163,7 +1158,7 @@
       net_error = net::ERR_ABORTED;
     // TODO(clamy): distinguish between CANCEL and CANCEL_AND_IGNORE.
     DCHECK_EQ(net::ERR_ABORTED, net_error);
-    OnRequestFailedInternal(false, net_error, base::nullopt, false, true);
+    OnRequestFailedInternal(false, net_error, base::nullopt, true);
 
     // DO NOT ADD CODE after this. The previous call to OnRequestFailed has
     // destroyed the NavigationRequest.
@@ -1173,7 +1168,7 @@
   if (result.action() == NavigationThrottle::BLOCK_RESPONSE) {
     DCHECK_EQ(net::ERR_BLOCKED_BY_RESPONSE, result.net_error_code());
     OnRequestFailedInternal(false, result.net_error_code(), base::nullopt,
-                            false, true);
+                            true);
     // DO NOT ADD CODE after this. The previous call to OnRequestFailed has
     // destroyed the NavigationRequest.
     return;
diff --git a/content/browser/frame_host/navigation_request.h b/content/browser/frame_host/navigation_request.h
index 56b59d0..7b1cccab 100644
--- a/content/browser/frame_host/navigation_request.h
+++ b/content/browser/frame_host/navigation_request.h
@@ -234,8 +234,7 @@
                              subresource_loader_params) override;
   void OnRequestFailed(bool has_stale_copy_in_cache,
                        int net_error,
-                       const base::Optional<net::SSLInfo>& ssl_info,
-                       bool should_ssl_errors_be_fatal) override;
+                       const base::Optional<net::SSLInfo>& ssl_info) override;
   void OnRequestStarted(base::TimeTicks timestamp) override;
 
   // A version of OnRequestFailed() that allows skipping throttles, to be used
@@ -243,7 +242,6 @@
   void OnRequestFailedInternal(bool has_stale_copy_in_cache,
                                int net_error,
                                const base::Optional<net::SSLInfo>& ssl_info,
-                               bool should_ssl_errors_be_fatal,
                                bool skip_throttles);
 
   // Called when the NavigationThrottles have been checked by the
diff --git a/content/browser/loader/navigation_url_loader_delegate.h b/content/browser/loader/navigation_url_loader_delegate.h
index 8432bffe..cf6cc7e 100644
--- a/content/browser/loader/navigation_url_loader_delegate.h
+++ b/content/browser/loader/navigation_url_loader_delegate.h
@@ -58,15 +58,14 @@
   // Called if the request fails before receving a response. |net_error| is a
   // network error code for the failure. |has_stale_copy_in_cache| is true if
   // there is a stale copy of the unreachable page in cache. |ssl_info| is the
-  // SSL info for the request. |should_ssl_errors_be_fatal| indicates
-  // whether SSL errors for the request should be fatal. If |net_error| is a
-  // certificate error and the navigation request was for the main frame, the
-  // caller must pass a value for |ssl_info|. If |net_error| is not a
-  // certificate error, |ssl_info| and |should_ssl_errors_be_fatal| are ignored.
-  virtual void OnRequestFailed(bool has_stale_copy_in_cache,
-                               int net_error,
-                               const base::Optional<net::SSLInfo>& ssl_info,
-                               bool should_ssl_errors_be_fatal) = 0;
+  // SSL info for the request. If |net_error| is a certificate error and the
+  // navigation request was for the main frame, the caller must pass a value
+  // for |ssl_info|. If |net_error| is not a certificate error, |ssl_info| is
+  // ignored.
+  virtual void OnRequestFailed(
+      bool has_stale_copy_in_cache,
+      int net_error,
+      const base::Optional<net::SSLInfo>& ssl_info) = 0;
 
   // Called after the network request has begun on the IO thread at time
   // |timestamp|. This is just a thread hop but is used to compare timing
diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc
index 47f0a27..3eb0d63 100644
--- a/content/browser/loader/navigation_url_loader_impl.cc
+++ b/content/browser/loader/navigation_url_loader_impl.cc
@@ -120,8 +120,7 @@
     bool should_ssl_errors_be_fatal) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
-  delegate_->OnRequestFailed(in_cache, net_error, ssl_info,
-                             should_ssl_errors_be_fatal);
+  delegate_->OnRequestFailed(in_cache, net_error, ssl_info);
 }
 
 void NavigationURLLoaderImpl::NotifyRequestStarted(base::TimeTicks timestamp) {
diff --git a/content/browser/loader/navigation_url_loader_network_service.cc b/content/browser/loader/navigation_url_loader_network_service.cc
index 48a7b97..5c6e9b6 100644
--- a/content/browser/loader/navigation_url_loader_network_service.cc
+++ b/content/browser/loader/navigation_url_loader_network_service.cc
@@ -726,11 +726,8 @@
                          "&NavigationURLLoaderNetworkService", this, "success",
                          false);
 
-  // TODO(https://crbug.com/757633): Pass real values in the case of cert
-  // errors.
-  bool should_ssl_errors_be_fatal = true;
   delegate_->OnRequestFailed(status.exists_in_cache, status.error_code,
-                             status.ssl_info, should_ssl_errors_be_fatal);
+                             status.ssl_info);
 }
 
 bool NavigationURLLoaderNetworkService::IsDownload() const {
diff --git a/content/browser/loader/navigation_url_loader_unittest.cc b/content/browser/loader/navigation_url_loader_unittest.cc
index 2d7b22f..3a134214 100644
--- a/content/browser/loader/navigation_url_loader_unittest.cc
+++ b/content/browser/loader/navigation_url_loader_unittest.cc
@@ -234,7 +234,6 @@
 // Tests that request failures are propagated correctly for a (non-fatal) cert
 // error:
 // - |ssl_info| has the expected values.
-// - |should_ssl_errors_be_fatal| is false.
 TEST_F(NavigationURLLoaderTest, RequestFailedCertError) {
   net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS);
   https_server.SetSSLConfig(net::EmbeddedTestServer::CERT_MISMATCHED_NAME);
@@ -252,13 +251,12 @@
   EXPECT_TRUE(https_server.GetCertificate()->Equals(ssl_info.cert.get()));
   EXPECT_EQ(net::ERR_CERT_COMMON_NAME_INVALID,
             net::MapCertStatusToNetError(ssl_info.cert_status));
-  EXPECT_FALSE(delegate.should_ssl_errors_be_fatal());
+  EXPECT_FALSE(ssl_info.is_fatal_cert_error);
   EXPECT_EQ(1, delegate.on_request_handled_counter());
 }
 
 // Tests that request failures are propagated correctly for a fatal cert error:
 // - |ssl_info| has the expected values.
-// - |should_ssl_errors_be_fatal| is true.
 TEST_F(NavigationURLLoaderTest, RequestFailedCertErrorFatal) {
   net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS);
   https_server.SetSSLConfig(net::EmbeddedTestServer::CERT_MISMATCHED_NAME);
@@ -285,7 +283,7 @@
   EXPECT_TRUE(https_server.GetCertificate()->Equals(ssl_info.cert.get()));
   EXPECT_EQ(net::ERR_CERT_COMMON_NAME_INVALID,
             net::MapCertStatusToNetError(ssl_info.cert_status));
-  EXPECT_TRUE(delegate.should_ssl_errors_be_fatal());
+  EXPECT_TRUE(ssl_info.is_fatal_cert_error);
   EXPECT_EQ(1, delegate.on_request_handled_counter());
 }
 
diff --git a/content/browser/renderer_host/media/audio_sync_reader.cc b/content/browser/renderer_host/media/audio_sync_reader.cc
index 5cbf3766..91d1f3e3f 100644
--- a/content/browser/renderer_host/media/audio_sync_reader.cc
+++ b/content/browser/renderer_host/media/audio_sync_reader.cc
@@ -14,6 +14,7 @@
 #include "base/memory/ptr_util.h"
 #include "base/memory/shared_memory.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/numerics/safe_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "base/trace_event/trace_event.h"
 #include "build/build_config.h"
@@ -54,6 +55,10 @@
           switches::kMuteAudio)),
       had_socket_error_(false),
       socket_(std::move(socket)),
+      // Validated for reasonable size in Create.
+      output_bus_buffer_size_(
+          AudioBus::CalculateMemorySize(params.channels(),
+                                        params.frames_per_buffer())),
       renderer_callback_count_(0),
       renderer_missed_callback_count_(0),
       trailing_renderer_missed_callback_count_(0),
@@ -209,8 +214,17 @@
     // For bitstream formats, we need the real data size and PCM frame count.
     AudioOutputBuffer* buffer =
         reinterpret_cast<AudioOutputBuffer*>(shared_memory_->memory());
-    output_bus_->SetBitstreamDataSize(buffer->params.bitstream_data_size);
-    output_bus_->SetBitstreamFrames(buffer->params.bitstream_frames);
+    uint32_t data_size = buffer->params.bitstream_data_size;
+    uint32_t bitstream_frames = buffer->params.bitstream_frames;
+    // |bitstream_frames| is cast to int below, so it must fit.
+    if (data_size > output_bus_buffer_size_ ||
+        !base::IsValueInRangeForNumericType<int>(bitstream_frames)) {
+      // Received data doesn't fit in the buffer, shouldn't happen.
+      dest->Zero();
+      return;
+    }
+    output_bus_->SetBitstreamDataSize(data_size);
+    output_bus_->SetBitstreamFrames(bitstream_frames);
   }
   output_bus_->CopyTo(dest);
 }
diff --git a/content/browser/renderer_host/media/audio_sync_reader.h b/content/browser/renderer_host/media/audio_sync_reader.h
index cdf55d7..16715be 100644
--- a/content/browser/renderer_host/media/audio_sync_reader.h
+++ b/content/browser/renderer_host/media/audio_sync_reader.h
@@ -79,6 +79,8 @@
   // Socket for transmitting audio data.
   std::unique_ptr<base::CancelableSyncSocket> socket_;
 
+  const uint32_t output_bus_buffer_size_;
+
   // Shared memory wrapper used for transferring audio data to Read() callers.
   std::unique_ptr<media::AudioBus> output_bus_;
 
diff --git a/content/browser/renderer_host/media/audio_sync_reader_unittest.cc b/content/browser/renderer_host/media/audio_sync_reader_unittest.cc
new file mode 100644
index 0000000..f9605d1
--- /dev/null
+++ b/content/browser/renderer_host/media/audio_sync_reader_unittest.cc
@@ -0,0 +1,108 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/renderer_host/media/audio_sync_reader.h"
+
+#include <limits>
+#include <memory>
+#include <type_traits>
+#include <utility>
+
+#include "base/memory/shared_memory.h"
+#include "base/sync_socket.h"
+#include "base/time/time.h"
+#include "content/public/test/test_browser_thread_bundle.h"
+#include "media/base/audio_bus.h"
+#include "media/base/audio_parameters.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+using ::testing::TestWithParam;
+
+namespace content {
+
+static_assert(
+    std::is_unsigned<decltype(
+        media::AudioOutputBufferParameters::bitstream_data_size)>::value,
+    "If |bitstream_data_size| is ever made signed, add tests for negative "
+    "buffer sizes.");
+enum OverflowTestCase {
+  kZero,
+  kNoOverflow,
+  kOverflowByOne,
+  kOverflowByOneThousand,
+  kOverflowByMax
+};
+
+static const OverflowTestCase overflow_test_case_values[]{
+    kZero, kNoOverflow, kOverflowByOne, kOverflowByOneThousand, kOverflowByMax};
+
+class AudioSyncReaderBitstreamTest : public TestWithParam<OverflowTestCase> {
+ public:
+  AudioSyncReaderBitstreamTest() {}
+  ~AudioSyncReaderBitstreamTest() override {}
+
+ private:
+  TestBrowserThreadBundle threads;
+};
+
+TEST_P(AudioSyncReaderBitstreamTest, BitstreamBufferOverflow_DoesNotWriteOOB) {
+  const int kSampleRate = 44100;
+  const int kBitsPerSample = 32;
+  const int kFramesPerBuffer = 1;
+  media::AudioParameters params(media::AudioParameters::AUDIO_BITSTREAM_AC3,
+                                media::CHANNEL_LAYOUT_STEREO, kSampleRate,
+                                kBitsPerSample, kFramesPerBuffer);
+
+  auto socket = std::make_unique<base::CancelableSyncSocket>();
+  std::unique_ptr<media::AudioBus> output_bus = media::AudioBus::Create(params);
+  std::unique_ptr<AudioSyncReader> reader =
+      AudioSyncReader::Create(params, socket.get());
+  const base::SharedMemory* shmem = reader->shared_memory();
+  media::AudioOutputBuffer* buffer =
+      reinterpret_cast<media::AudioOutputBuffer*>(shmem->memory());
+  reader->RequestMoreData(base::TimeDelta(), base::TimeTicks(), 0);
+
+  uint32_t signal;
+  EXPECT_EQ(socket->Receive(&signal, sizeof(signal)), sizeof(signal));
+
+  // So far, this is an ordinary stream.
+  // Now |reader| expects data to be writted to the shared memory. The renderer
+  // says how much data was written.
+  switch (GetParam()) {
+    case kZero:
+      buffer->params.bitstream_data_size = 0;
+      break;
+    case kNoOverflow:
+      buffer->params.bitstream_data_size =
+          shmem->mapped_size() - sizeof(media::AudioOutputBufferParameters);
+      break;
+    case kOverflowByOne:
+      buffer->params.bitstream_data_size =
+          shmem->mapped_size() - sizeof(media::AudioOutputBufferParameters) + 1;
+      break;
+    case kOverflowByOneThousand:
+      buffer->params.bitstream_data_size =
+          shmem->mapped_size() - sizeof(media::AudioOutputBufferParameters) +
+          1000;
+      break;
+    case kOverflowByMax:
+      buffer->params.bitstream_data_size = std::numeric_limits<decltype(
+          buffer->params.bitstream_data_size)>::max();
+      break;
+  }
+
+  ++signal;
+  EXPECT_EQ(socket->Send(&signal, sizeof(signal)), sizeof(signal));
+
+  // The purpose of the test is to ensure this call doesn't result in undefined
+  // behavior, which should be verified by sanitizers.
+  reader->Read(output_bus.get());
+}
+
+INSTANTIATE_TEST_CASE_P(AudioSyncReaderTest,
+                        AudioSyncReaderBitstreamTest,
+                        ::testing::ValuesIn(overflow_test_case_values));
+
+}  // namespace content
diff --git a/content/public/browser/navigation_handle.h b/content/public/browser/navigation_handle.h
index 31fece5..300adbb7 100644
--- a/content/public/browser/navigation_handle.h
+++ b/content/public/browser/navigation_handle.h
@@ -243,9 +243,6 @@
   // scheme, returns an empty object.
   virtual const net::SSLInfo& GetSSLInfo() = 0;
 
-  // Whether the failure for a certificate error should be fatal.
-  virtual bool ShouldSSLErrorsBeFatal() = 0;
-
   // Returns the ID of the URLRequest associated with this navigation. Can only
   // be called from NavigationThrottle::WillProcessResponse and
   // WebContentsObserver::ReadyToCommitNavigation.
diff --git a/content/renderer/media/rtc_peer_connection_handler.cc b/content/renderer/media/rtc_peer_connection_handler.cc
index 5221587..c6da4bb 100644
--- a/content/renderer/media/rtc_peer_connection_handler.cc
+++ b/content/renderer/media/rtc_peer_connection_handler.cc
@@ -1923,14 +1923,11 @@
 
 bool RTCPeerConnectionHandler::RemoveTrack(blink::WebRTCRtpSender* web_sender) {
   DCHECK(thread_checker_.CalledOnValidThread());
-  RTCRtpSender* sender = static_cast<RTCRtpSender*>(web_sender);
-  if (!native_peer_connection_->RemoveTrack(sender->webrtc_sender()))
+  auto it = rtp_senders_.find(web_sender->Id());
+  DCHECK(it != rtp_senders_.end());
+  if (!it->second->RemoveFromPeerConnection(native_peer_connection_.get()))
     return false;
-  sender->OnRemoved();
-  // Make sure |rtp_senders_| is up-to-date. When |AddStream| and |RemoveStream|
-  // is implemented using |AddTrack| and |RemoveTrack|, add and remove
-  // |rtp_senders_| there. https://crbug.com/738929
-  GetSenders();
+  rtp_senders_.erase(it);
   return true;
 }
 
diff --git a/content/renderer/media/webrtc/rtc_rtp_sender.cc b/content/renderer/media/webrtc/rtc_rtp_sender.cc
index 7743325..824e0ab8 100644
--- a/content/renderer/media/webrtc/rtc_rtp_sender.cc
+++ b/content/renderer/media/webrtc/rtc_rtp_sender.cc
@@ -40,10 +40,15 @@
     return stream_ref_copies;
   }
 
-  void OnRemoved() {
-    // TODO(hbos): We should do |webrtc_sender_->SetTrack(null)| but that is
-    // not allowed on a stopped sender. https://crbug.com/webrtc/7945
+  bool RemoveFromPeerConnection(webrtc::PeerConnectionInterface* pc) {
+    if (!pc->RemoveTrack(webrtc_sender_))
+      return false;
+    // TODO(hbos): Removing the track should null the sender's track, or we
+    // should do |webrtc_sender_->SetTrack(null)| but that is not allowed on a
+    // stopped sender. In the meantime, there is a discrepancy between layers.
+    // https://crbug.com/webrtc/7945
     track_ref_.reset();
+    return true;
   }
 
  private:
@@ -106,10 +111,6 @@
   return track_ref ? track_ref->web_track() : blink::WebMediaStreamTrack();
 }
 
-void RTCRtpSender::OnRemoved() {
-  internal_->OnRemoved();
-}
-
 webrtc::RtpSenderInterface* RTCRtpSender::webrtc_sender() const {
   return internal_->webrtc_sender();
 }
@@ -119,4 +120,9 @@
   return track_ref ? track_ref->webrtc_track() : nullptr;
 }
 
+bool RTCRtpSender::RemoveFromPeerConnection(
+    webrtc::PeerConnectionInterface* pc) {
+  return internal_->RemoveFromPeerConnection(pc);
+}
+
 }  // namespace content
diff --git a/content/renderer/media/webrtc/rtc_rtp_sender.h b/content/renderer/media/webrtc/rtc_rtp_sender.h
index 73e48e9..fc794a5d 100644
--- a/content/renderer/media/webrtc/rtc_rtp_sender.h
+++ b/content/renderer/media/webrtc/rtc_rtp_sender.h
@@ -13,6 +13,7 @@
 #include "content/renderer/media/webrtc/webrtc_media_stream_track_adapter_map.h"
 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"
 #include "third_party/WebKit/public/platform/WebRTCRtpSender.h"
+#include "third_party/webrtc/api/peerconnectioninterface.h"
 #include "third_party/webrtc/api/rtpsenderinterface.h"
 #include "third_party/webrtc/rtc_base/scoped_ref_ptr.h"
 
@@ -46,15 +47,9 @@
   uintptr_t Id() const override;
   blink::WebMediaStreamTrack Track() const override;
 
-  // Nulls the |Track|. Must be called when the webrtc layer sender is removed
-  // from the peer connection and the webrtc sender's track nulled so that this
-  // is made visible to upper layers.
-  // TODO(hbos): Make the "ReplaceTrack" and "RemoveTrack" interaction with
-  // webrtc layer part of this class as to not make the operation a two-step
-  // process. https://crbug.com/790007
-  void OnRemoved();
   webrtc::RtpSenderInterface* webrtc_sender() const;
   const webrtc::MediaStreamTrackInterface* webrtc_track() const;
+  bool RemoveFromPeerConnection(webrtc::PeerConnectionInterface* pc);
 
  private:
   class RTCRtpSenderInternal;
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
index d8ffa367..c07b4b1 100644
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -1366,6 +1366,7 @@
     "../browser/renderer_host/media/audio_output_authorization_handler_unittest.cc",
     "../browser/renderer_host/media/audio_output_delegate_impl_unittest.cc",
     "../browser/renderer_host/media/audio_renderer_host_unittest.cc",
+    "../browser/renderer_host/media/audio_sync_reader_unittest.cc",
     "../browser/renderer_host/media/fake_video_capture_device_launcher.cc",
     "../browser/renderer_host/media/fake_video_capture_device_launcher.h",
     "../browser/renderer_host/media/fake_video_capture_provider.cc",
diff --git a/content/test/test_navigation_url_loader.cc b/content/test/test_navigation_url_loader.cc
index 121c88e..e3c48ea 100644
--- a/content/test/test_navigation_url_loader.cc
+++ b/content/test/test_navigation_url_loader.cc
@@ -54,7 +54,7 @@
 }
 
 void TestNavigationURLLoader::SimulateError(int error_code) {
-  delegate_->OnRequestFailed(false, error_code, base::nullopt, false);
+  delegate_->OnRequestFailed(false, error_code, base::nullopt);
 }
 
 void TestNavigationURLLoader::CallOnRequestRedirected(
diff --git a/content/test/test_navigation_url_loader_delegate.cc b/content/test/test_navigation_url_loader_delegate.cc
index ef5b9b1..cbe46b9 100644
--- a/content/test/test_navigation_url_loader_delegate.cc
+++ b/content/test/test_navigation_url_loader_delegate.cc
@@ -79,12 +79,10 @@
 void TestNavigationURLLoaderDelegate::OnRequestFailed(
     bool in_cache,
     int net_error,
-    const base::Optional<net::SSLInfo>& ssl_info,
-    bool should_ssl_errors_be_fatal) {
+    const base::Optional<net::SSLInfo>& ssl_info) {
   net_error_ = net_error;
   if (ssl_info.has_value())
     ssl_info_ = ssl_info.value();
-  should_ssl_errors_be_fatal_ = should_ssl_errors_be_fatal;
   if (request_failed_)
     request_failed_->Quit();
 }
diff --git a/content/test/test_navigation_url_loader_delegate.h b/content/test/test_navigation_url_loader_delegate.h
index 674c576..ae2c26d 100644
--- a/content/test/test_navigation_url_loader_delegate.h
+++ b/content/test/test_navigation_url_loader_delegate.h
@@ -40,9 +40,6 @@
   StreamHandle* body() const { return body_.get(); }
   int net_error() const { return net_error_; }
   const net::SSLInfo& ssl_info() const { return ssl_info_; }
-  bool should_ssl_errors_be_fatal() const {
-    return should_ssl_errors_be_fatal_;
-  }
   int on_request_handled_counter() const { return on_request_handled_counter_; }
   bool is_download() const { return is_download_; }
 
@@ -73,8 +70,7 @@
                              subresource_loader_params) override;
   void OnRequestFailed(bool in_cache,
                        int net_error,
-                       const base::Optional<net::SSLInfo>& ssl_info,
-                       bool should_ssl_errors_be_fatal) override;
+                       const base::Optional<net::SSLInfo>& ssl_info) override;
   void OnRequestStarted(base::TimeTicks timestamp) override;
 
  private:
@@ -85,7 +81,6 @@
   mojo::ScopedDataPipeConsumerHandle handle_;
   int net_error_;
   net::SSLInfo ssl_info_;
-  bool should_ssl_errors_be_fatal_;
   int on_request_handled_counter_;
   bool is_download_;
 
diff --git a/ios/chrome/browser/ui/toolbar/clean/toolbar_view_controller.mm b/ios/chrome/browser/ui/toolbar/clean/toolbar_view_controller.mm
index 44fcd944..e9adf26b 100644
--- a/ios/chrome/browser/ui/toolbar/clean/toolbar_view_controller.mm
+++ b/ios/chrome/browser/ui/toolbar/clean/toolbar_view_controller.mm
@@ -134,6 +134,13 @@
     self.contractButton.hidden = NO;
     self.contractButton.alpha = 1;
   }];
+  [animator addCompletion:^(UIViewAnimatingPosition finalPosition) {
+    CGFloat borderWidth = (finalPosition == UIViewAnimatingPositionEnd)
+                              ? 0
+                              : kLocationBarBorderWidth;
+    self.locationBarContainer.layer.borderWidth = borderWidth;
+  }];
+
   self.expanded = YES;
 }
 
@@ -143,6 +150,7 @@
   [NSLayoutConstraint deactivateConstraints:self.expandedToolbarConstraints];
   [NSLayoutConstraint activateConstraints:self.regularToolbarConstraints];
   [animator addAnimations:^{
+    self.locationBarContainer.layer.borderWidth = kLocationBarBorderWidth;
     [self.view layoutIfNeeded];
     self.contractButton.hidden = YES;
     self.contractButton.alpha = 0;
diff --git a/media/audio/audio_output_controller.cc b/media/audio/audio_output_controller.cc
index 99b3473..4fb4eb30 100644
--- a/media/audio/audio_output_controller.cc
+++ b/media/audio/audio_output_controller.cc
@@ -350,6 +350,10 @@
   }
 
   if (will_monitor_audio_levels()) {
+    // Note: this code path should never be hit when using bitstream streams.
+    // Scan doesn't expect compressed audio, so it may go out of bounds trying
+    // to read |frames| frames of PCM data.
+    CHECK(!params_.IsBitstreamFormat());
     power_monitor_.Scan(*dest, frames);
 
     const auto now = base::TimeTicks::Now();
diff --git a/media/audio/cras/audio_manager_cras.cc b/media/audio/cras/audio_manager_cras.cc
index 42b26de7..c3afdb0 100644
--- a/media/audio/cras/audio_manager_cras.cc
+++ b/media/audio/cras/audio_manager_cras.cc
@@ -225,6 +225,11 @@
              : base::Uint64ToString(output_device_it->id);
 }
 
+std::string AudioManagerCras::GetDefaultInputDeviceID() {
+  DCHECK(GetTaskRunner()->BelongsToCurrentThread());
+  return base::Uint64ToString(GetPrimaryActiveInputNode());
+}
+
 std::string AudioManagerCras::GetDefaultOutputDeviceID() {
   DCHECK(GetTaskRunner()->BelongsToCurrentThread());
   return base::Uint64ToString(GetPrimaryActiveOutputNode());
diff --git a/media/audio/cras/audio_manager_cras.h b/media/audio/cras/audio_manager_cras.h
index 532d1f20..c3215ed 100644
--- a/media/audio/cras/audio_manager_cras.h
+++ b/media/audio/cras/audio_manager_cras.h
@@ -34,6 +34,7 @@
       const std::string& device_id) override;
   std::string GetAssociatedOutputDeviceID(
       const std::string& input_device_id) override;
+  std::string GetDefaultInputDeviceID() override;
   std::string GetDefaultOutputDeviceID() override;
   std::string GetGroupIDOutput(const std::string& output_device_id) override;
   std::string GetGroupIDInput(const std::string& input_device_id) override;
diff --git a/media/cdm/cdm_module.cc b/media/cdm/cdm_module.cc
index 2bf89f1..b0d65ba4 100644
--- a/media/cdm/cdm_module.cc
+++ b/media/cdm/cdm_module.cc
@@ -119,7 +119,7 @@
 #else
 bool CdmModule::Initialize(const base::FilePath& cdm_path) {
 #endif  // BUILDFLAG(ENABLE_CDM_HOST_VERIFICATION)
-  DVLOG(2) << __func__ << ": cdm_path = " << cdm_path.value();
+  DVLOG(1) << __func__ << ": cdm_path = " << cdm_path.value();
 
   DCHECK(!was_initialize_called_);
   was_initialize_called_ = true;
@@ -167,9 +167,10 @@
   }
 
   // In case of crashes, provide CDM version to facilitate investigation.
-  crash_reporter::InitializeCrashKeys();
-  static crash_reporter::CrashKeyString<32> cdm_version_key("cdm-version");
   std::string cdm_version = get_cdm_version_func_();
+  DVLOG(2) << __func__ << ": cdm_version = " << cdm_version;
+
+  static crash_reporter::CrashKeyString<32> cdm_version_key("cdm-version");
   cdm_version_key.Set(cdm_version);
 
 #if defined(OS_WIN)
diff --git a/mojo/public/cpp/system/file_data_pipe_producer.cc b/mojo/public/cpp/system/file_data_pipe_producer.cc
index 6b19a173..d74ed93b 100644
--- a/mojo/public/cpp/system/file_data_pipe_producer.cc
+++ b/mojo/public/cpp/system/file_data_pipe_producer.cc
@@ -32,8 +32,6 @@
   switch (error) {
     case base::File::FILE_OK:
       return MOJO_RESULT_OK;
-    case base::File::FILE_ERROR_EXISTS:
-      return MOJO_RESULT_ALREADY_EXISTS;
     case base::File::FILE_ERROR_NOT_FOUND:
       return MOJO_RESULT_NOT_FOUND;
     case base::File::FILE_ERROR_SECURITY:
@@ -132,7 +130,7 @@
     if (result != MOJO_RESULT_OK) {
       // Either the consumer pipe has been closed or something terrible
       // happened. In any case, we'll never be able to write more data.
-      Finish(MOJO_RESULT_ABORTED);
+      Finish(result);
       return;
     }
 
@@ -149,7 +147,7 @@
       if (result == MOJO_RESULT_SHOULD_WAIT)
         return;
       if (result != MOJO_RESULT_OK) {
-        Finish(MOJO_RESULT_ABORTED);
+        Finish(result);
         return;
       }
 
diff --git a/mojo/public/cpp/system/file_data_pipe_producer.h b/mojo/public/cpp/system/file_data_pipe_producer.h
index f4d325a6..a8e4393 100644
--- a/mojo/public/cpp/system/file_data_pipe_producer.h
+++ b/mojo/public/cpp/system/file_data_pipe_producer.h
@@ -39,8 +39,14 @@
   //
   // If the write is successful |result| will be |MOJO_RESULT_OK|. Otherwise
   // (e.g. if the producer detects the consumer is closed and the pipe has no
-  // remaining capacity, or if file reads fail for any reason) |result| will be
-  // |MOJO_RESULT_ABORTED|.
+  // remaining capacity, or if file open/reads fail for any reason) |result|
+  // will be one of the following:
+  //
+  //   |MOJO_RESULT_ABORTED|
+  //   |MOJO_RESULT_NOT_FOUND|
+  //   |MOJO_RESULT_PERMISSION_DENIED|
+  //   |MOJO_RESULT_RESOURCE_EXHAUSTED|
+  //   |MOJO_RESULT_UNKNOWN|
   //
   // Note that if the FileDataPipeProducer is destroyed before |callback| can be
   // invoked, |callback| is *never* invoked, and the write will be permanently
diff --git a/net/quic/chromium/crypto/proof_verifier_chromium.cc b/net/quic/chromium/crypto/proof_verifier_chromium.cc
index 5217270..fa695a1 100644
--- a/net/quic/chromium/crypto/proof_verifier_chromium.cc
+++ b/net/quic/chromium/crypto/proof_verifier_chromium.cc
@@ -32,7 +32,7 @@
 namespace net {
 
 ProofVerifyDetailsChromium::ProofVerifyDetailsChromium()
-    : pkp_bypassed(false) {}
+    : pkp_bypassed(false), is_fatal_cert_error(false) {}
 
 ProofVerifyDetailsChromium::~ProofVerifyDetailsChromium() {}
 
@@ -490,6 +490,10 @@
       result = ct_result;
   }
 
+  verify_details_->is_fatal_cert_error =
+      IsCertStatusError(cert_status) && !IsCertStatusMinorError(cert_status) &&
+      transport_security_state_->ShouldSSLErrorsBeFatal(hostname_);
+
   if (result != OK) {
     std::string error_string = ErrorToString(result);
     error_details_ = StringPrintf("Failed to verify certificate chain: %s",
diff --git a/net/quic/chromium/crypto/proof_verifier_chromium.h b/net/quic/chromium/crypto/proof_verifier_chromium.h
index f5b0db50..53ddce4e 100644
--- a/net/quic/chromium/crypto/proof_verifier_chromium.h
+++ b/net/quic/chromium/crypto/proof_verifier_chromium.h
@@ -48,6 +48,10 @@
 
   // True if PKP was bypassed due to a local trust anchor.
   bool pkp_bypassed;
+
+  // True if there was a certificate error which should be treated as fatal,
+  // and false otherwise.
+  bool is_fatal_cert_error;
 };
 
 // ProofVerifyContextChromium is the implementation-specific information that a
diff --git a/net/quic/chromium/crypto/proof_verifier_chromium_test.cc b/net/quic/chromium/crypto/proof_verifier_chromium_test.cc
index 51956f3..6155dd35 100644
--- a/net/quic/chromium/crypto/proof_verifier_chromium_test.cc
+++ b/net/quic/chromium/crypto/proof_verifier_chromium_test.cc
@@ -445,6 +445,67 @@
   return hashes;
 }
 
+TEST_F(ProofVerifierChromiumTest, IsFatalErrorNotSetForNonFatalError) {
+  scoped_refptr<X509Certificate> test_cert = GetTestServerCertificate();
+  ASSERT_TRUE(test_cert);
+
+  CertVerifyResult dummy_result;
+  dummy_result.cert_status = MapNetErrorToCertStatus(ERR_CERT_DATE_INVALID);
+  dummy_result.verified_cert = test_cert;
+
+  MockCertVerifier dummy_verifier;
+  dummy_verifier.AddResultForCert(test_cert.get(), dummy_result,
+                                  ERR_CERT_DATE_INVALID);
+
+  ProofVerifierChromium proof_verifier(&dummy_verifier, &ct_policy_enforcer_,
+                                       &transport_security_state_,
+                                       ct_verifier_.get());
+
+  std::unique_ptr<DummyProofVerifierCallback> callback(
+      new DummyProofVerifierCallback);
+  QuicAsyncStatus status = proof_verifier.VerifyProof(
+      kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_35, kTestChloHash,
+      certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(),
+      &error_details_, &details_, std::move(callback));
+  ASSERT_EQ(QUIC_FAILURE, status);
+
+  ProofVerifyDetailsChromium* verify_details =
+      static_cast<ProofVerifyDetailsChromium*>(details_.get());
+  EXPECT_FALSE(verify_details->is_fatal_cert_error);
+}
+
+TEST_F(ProofVerifierChromiumTest, IsFatalErrorSetForFatalError) {
+  scoped_refptr<X509Certificate> test_cert = GetTestServerCertificate();
+  ASSERT_TRUE(test_cert);
+
+  CertVerifyResult dummy_result;
+  dummy_result.cert_status = MapNetErrorToCertStatus(ERR_CERT_DATE_INVALID);
+  dummy_result.verified_cert = test_cert;
+
+  MockCertVerifier dummy_verifier;
+  dummy_verifier.AddResultForCert(test_cert.get(), dummy_result,
+                                  ERR_CERT_DATE_INVALID);
+
+  const base::Time expiry =
+      base::Time::Now() + base::TimeDelta::FromSeconds(1000);
+  transport_security_state_.AddHSTS(kTestHostname, expiry, true);
+
+  ProofVerifierChromium proof_verifier(&dummy_verifier, &ct_policy_enforcer_,
+                                       &transport_security_state_,
+                                       ct_verifier_.get());
+
+  std::unique_ptr<DummyProofVerifierCallback> callback(
+      new DummyProofVerifierCallback);
+  QuicAsyncStatus status = proof_verifier.VerifyProof(
+      kTestHostname, kTestPort, kTestConfig, QUIC_VERSION_35, kTestChloHash,
+      certs_, kTestEmptySCT, GetTestSignature(), verify_context_.get(),
+      &error_details_, &details_, std::move(callback));
+  ASSERT_EQ(QUIC_FAILURE, status);
+  ProofVerifyDetailsChromium* verify_details =
+      static_cast<ProofVerifyDetailsChromium*>(details_.get());
+  EXPECT_TRUE(verify_details->is_fatal_cert_error);
+}
+
 // Test that PKP is enforced for certificates that chain up to known roots.
 TEST_F(ProofVerifierChromiumTest, PKPEnforced) {
   scoped_refptr<X509Certificate> test_cert = GetTestServerCertificate();
diff --git a/net/quic/chromium/quic_chromium_client_session.cc b/net/quic/chromium/quic_chromium_client_session.cc
index 5e5935d..1d288dde 100644
--- a/net/quic/chromium/quic_chromium_client_session.cc
+++ b/net/quic/chromium/quic_chromium_client_session.cc
@@ -692,6 +692,7 @@
       transport_security_state_(transport_security_state),
       server_info_(std::move(server_info)),
       pkp_bypassed_(false),
+      is_fatal_cert_error_(false),
       num_total_streams_(0),
       task_runner_(task_runner),
       net_log_(NetLogWithSource::Make(net_log, NetLogSourceType::QUIC_SESSION)),
@@ -1089,6 +1090,7 @@
   ssl_info->security_bits = security_bits;
   ssl_info->handshake_type = SSLInfo::HANDSHAKE_FULL;
   ssl_info->pinning_failure_log = pinning_failure_log_;
+  ssl_info->is_fatal_cert_error = is_fatal_cert_error_;
 
   ssl_info->UpdateCertificateTransparencyInfo(*ct_verify_result_);
 
@@ -1909,6 +1911,7 @@
   ct_verify_result_ = std::move(ct_verify_result_copy);
   logger_->OnCertificateVerified(*cert_verify_result_);
   pkp_bypassed_ = verify_details_chromium->pkp_bypassed;
+  is_fatal_cert_error_ = verify_details_chromium->is_fatal_cert_error;
 }
 
 void QuicChromiumClientSession::StartReading() {
diff --git a/net/quic/chromium/quic_chromium_client_session.h b/net/quic/chromium/quic_chromium_client_session.h
index 588b968..ec43184 100644
--- a/net/quic/chromium/quic_chromium_client_session.h
+++ b/net/quic/chromium/quic_chromium_client_session.h
@@ -688,6 +688,7 @@
   std::unique_ptr<ct::CTVerifyResult> ct_verify_result_;
   std::string pinning_failure_log_;
   bool pkp_bypassed_;
+  bool is_fatal_cert_error_;
   HandleSet handles_;
   StreamRequestQueue stream_requests_;
   std::vector<CompletionCallback> waiting_for_confirmation_callbacks_;
diff --git a/net/quic/chromium/quic_chromium_client_session_test.cc b/net/quic/chromium/quic_chromium_client_session_test.cc
index 293479d..1833e3a1 100644
--- a/net/quic/chromium/quic_chromium_client_session_test.cc
+++ b/net/quic/chromium/quic_chromium_client_session_test.cc
@@ -208,6 +208,53 @@
                         QuicChromiumClientSessionTest,
                         ::testing::ValuesIn(AllSupportedTransportVersions()));
 
+TEST_P(QuicChromiumClientSessionTest, IsFatalErrorNotSetForNonFatalError) {
+  MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
+  std::unique_ptr<QuicEncryptedPacket> settings_packet(
+      client_maker_.MakeInitialSettingsPacket(1, nullptr));
+  MockWrite writes[] = {
+      MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1)};
+  socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes,
+                                             arraysize(writes)));
+  Initialize();
+
+  SSLInfo ssl_info;
+  ProofVerifyDetailsChromium details;
+  details.cert_verify_result.verified_cert =
+      ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
+  details.cert_verify_result.cert_status =
+      MapNetErrorToCertStatus(ERR_CERT_DATE_INVALID);
+  details.is_fatal_cert_error = false;
+  CompleteCryptoHandshake();
+  session_->OnProofVerifyDetailsAvailable(details);
+
+  ASSERT_TRUE(session_->GetSSLInfo(&ssl_info));
+  EXPECT_FALSE(ssl_info.is_fatal_cert_error);
+}
+
+TEST_P(QuicChromiumClientSessionTest, IsFatalErrorSetForFatalError) {
+  MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
+  std::unique_ptr<QuicEncryptedPacket> settings_packet(
+      client_maker_.MakeInitialSettingsPacket(1, nullptr));
+  MockWrite writes[] = {
+      MockWrite(ASYNC, settings_packet->data(), settings_packet->length(), 1)};
+  socket_data_.reset(new SequencedSocketData(reads, arraysize(reads), writes,
+                                             arraysize(writes)));
+  Initialize();
+
+  SSLInfo ssl_info;
+  ProofVerifyDetailsChromium details;
+  details.cert_verify_result.verified_cert =
+      ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
+  details.cert_verify_result.cert_status =
+      MapNetErrorToCertStatus(ERR_CERT_DATE_INVALID);
+  details.is_fatal_cert_error = true;
+  CompleteCryptoHandshake();
+  session_->OnProofVerifyDetailsAvailable(details);
+  ASSERT_TRUE(session_->GetSSLInfo(&ssl_info));
+  EXPECT_TRUE(ssl_info.is_fatal_cert_error);
+}
+
 TEST_P(QuicChromiumClientSessionTest, CryptoConnect) {
   MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
   std::unique_ptr<QuicEncryptedPacket> settings_packet(
diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket_impl.cc
index c03be38..c13ccac 100644
--- a/net/socket/ssl_client_socket_impl.cc
+++ b/net/socket/ssl_client_socket_impl.cc
@@ -413,6 +413,7 @@
       transport_security_state_(context.transport_security_state),
       policy_enforcer_(context.ct_policy_enforcer),
       pkp_bypassed_(false),
+      is_fatal_cert_error_(false),
       connect_error_details_(SSLErrorDetails::kOther),
       net_log_(transport_->socket()->NetLog()),
       weak_factory_(this) {
@@ -674,7 +675,7 @@
   ssl_info->token_binding_key_param = tb_negotiated_param_;
   ssl_info->pinning_failure_log = pinning_failure_log_;
   ssl_info->ocsp_result = server_cert_verify_result_.ocsp_result;
-
+  ssl_info->is_fatal_cert_error = is_fatal_cert_error_;
   AddCTInfoToSSLInfo(ssl_info);
 
   const SSL_CIPHER* cipher = SSL_get_current_cipher(ssl_.get());
@@ -1234,6 +1235,10 @@
       result = ct_result;
   }
 
+  is_fatal_cert_error_ =
+      IsCertStatusError(cert_status) && !IsCertStatusMinorError(cert_status) &&
+      transport_security_state_->ShouldSSLErrorsBeFatal(host_and_port_.host());
+
   if (result == OK) {
     DCHECK(!certificate_verified_);
     certificate_verified_ = true;
diff --git a/net/socket/ssl_client_socket_impl.h b/net/socket/ssl_client_socket_impl.h
index fb55303..52f40b1 100644
--- a/net/socket/ssl_client_socket_impl.h
+++ b/net/socket/ssl_client_socket_impl.h
@@ -353,6 +353,10 @@
   // True if PKP is bypassed due to a local trust anchor.
   bool pkp_bypassed_;
 
+  // True if there was a certificate error which should be treated as fatal,
+  // and false otherwise.
+  bool is_fatal_cert_error_;
+
   SSLErrorDetails connect_error_details_;
 
   NetLogWithSource net_log_;
diff --git a/net/socket/ssl_client_socket_unittest.cc b/net/socket/ssl_client_socket_unittest.cc
index 6891d8e6..466bc71 100644
--- a/net/socket/ssl_client_socket_unittest.cc
+++ b/net/socket/ssl_client_socket_unittest.cc
@@ -2757,6 +2757,40 @@
   // buffer. Call SSL_pending.
 }
 
+// Tests that |is_fatal_cert_error| does not get set for a certificate error,
+// on a non-HSTS host.
+TEST_F(SSLClientSocketTest, IsFatalErrorNotSetOnNonFatalError) {
+  cert_verifier_->set_default_result(ERR_CERT_DATE_INVALID);
+  SpawnedTestServer::SSLOptions ssl_options(
+      SpawnedTestServer::SSLOptions::CERT_CHAIN_WRONG_ROOT);
+  ASSERT_TRUE(StartTestServer(ssl_options));
+  SSLConfig ssl_config;
+  int rv;
+  ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv));
+  SSLInfo ssl_info;
+  ASSERT_TRUE(sock_->GetSSLInfo(&ssl_info));
+  EXPECT_FALSE(ssl_info.is_fatal_cert_error);
+}
+
+// Tests that |is_fatal_cert_error| gets set for a certificate error on an
+// HSTS host.
+TEST_F(SSLClientSocketTest, IsFatalErrorSetOnFatalError) {
+  cert_verifier_->set_default_result(ERR_CERT_DATE_INVALID);
+  SpawnedTestServer::SSLOptions ssl_options(
+      SpawnedTestServer::SSLOptions::CERT_CHAIN_WRONG_ROOT);
+  ASSERT_TRUE(StartTestServer(ssl_options));
+  SSLConfig ssl_config;
+  int rv;
+  const base::Time expiry =
+      base::Time::Now() + base::TimeDelta::FromSeconds(1000);
+  context_.transport_security_state->AddHSTS(
+      spawned_test_server()->host_port_pair().host(), expiry, true);
+  ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv));
+  SSLInfo ssl_info;
+  ASSERT_TRUE(sock_->GetSSLInfo(&ssl_info));
+  EXPECT_TRUE(ssl_info.is_fatal_cert_error);
+}
+
 // Tests that IsConnectedAndIdle treats a socket as idle even if a Write hasn't
 // been flushed completely out of SSLClientSocket's internal buffers. This is a
 // regression test for https://crbug.com/466147.
diff --git a/net/ssl/ssl_info.cc b/net/ssl/ssl_info.cc
index 28fcc14..f80610f2 100644
--- a/net/ssl/ssl_info.cc
+++ b/net/ssl/ssl_info.cc
@@ -48,6 +48,7 @@
       ct::CTPolicyCompliance::CT_POLICY_COMPLIANCE_DETAILS_NOT_AVAILABLE;
   ct_policy_compliance_required = false;
   ocsp_result = OCSPVerifyResult();
+  is_fatal_cert_error = false;
 }
 
 void SSLInfo::SetCertError(int error) {
diff --git a/net/ssl/ssl_info.h b/net/ssl/ssl_info.h
index fd39bbc..2d903cf2 100644
--- a/net/ssl/ssl_info.h
+++ b/net/ssl/ssl_info.h
@@ -139,6 +139,10 @@
 
   // OCSP stapling details.
   OCSPVerifyResult ocsp_result;
+
+  // True if there was a certificate error which should be treated as fatal,
+  // and false otherwise.
+  bool is_fatal_cert_error;
 };
 
 }  // namespace net
diff --git a/services/resource_coordinator/memory_instrumentation/graph.h b/services/resource_coordinator/memory_instrumentation/graph.h
index 2523afefe..25abb63 100644
--- a/services/resource_coordinator/memory_instrumentation/graph.h
+++ b/services/resource_coordinator/memory_instrumentation/graph.h
@@ -128,6 +128,14 @@
     void add_not_owning_sub_size(uint64_t addition) {
       not_owning_sub_size_ += addition;
     }
+    double owned_coefficient() const { return owned_coefficient_; }
+    void set_owned_coefficient(double owned_coefficient) {
+      owned_coefficient_ = owned_coefficient;
+    }
+    double owning_coefficient() const { return owning_coefficient_; }
+    void set_owning_coefficient(double owning_coefficient) {
+      owning_coefficient_ = owning_coefficient;
+    }
     GlobalDumpGraph::Edge* owns_edge() const { return owns_edge_; }
     std::map<std::string, Node*>* children() { return &children_; }
     std::vector<GlobalDumpGraph::Edge*>* owned_by_edges() {
@@ -146,6 +154,8 @@
     bool weak_ = false;
     uint64_t not_owning_sub_size_ = 0;
     uint64_t not_owned_sub_size_ = 0;
+    double owned_coefficient_ = 1;
+    double owning_coefficient_ = 1;
 
     GlobalDumpGraph::Edge* owns_edge_;
     std::vector<GlobalDumpGraph::Edge*> owned_by_edges_;
diff --git a/services/resource_coordinator/memory_instrumentation/graph_processor.cc b/services/resource_coordinator/memory_instrumentation/graph_processor.cc
index f3f9e065..520c59f 100644
--- a/services/resource_coordinator/memory_instrumentation/graph_processor.cc
+++ b/services/resource_coordinator/memory_instrumentation/graph_processor.cc
@@ -149,6 +149,15 @@
       CalculateDumpSubSizes(node);
     }
   }
+
+  // Tenth pass: Calculate owned and owning coefficients of owned and owner
+  // nodes.
+  {
+    auto it = global_graph->VisitInDepthFirstPostOrder();
+    while (Node* node = it.next()) {
+      CalculateDumpOwnershipCoefficient(node);
+    }
+  }
 }
 
 // static
@@ -626,4 +635,75 @@
   }
 }
 
+// static
+void GraphProcessor::CalculateDumpOwnershipCoefficient(Node* node) {
+  // Completely skip dumps with undefined size.
+  base::Optional<uint64_t> size_opt = GetSizeEntryOfNode(node);
+  if (!size_opt)
+    return;
+
+  // We only need to consider owned dumps.
+  if (node->owned_by_edges()->empty())
+    return;
+
+  // Sort the owners in decreasing order of ownership priority and
+  // increasing order of not-owning sub-size (in case of equal priority).
+  std::vector<Edge*> owners = *node->owned_by_edges();
+  std::sort(owners.begin(), owners.end(), [](Edge* a, Edge* b) {
+    if (a->priority() == b->priority()) {
+      return a->source()->not_owning_sub_size() <
+             b->source()->not_owning_sub_size();
+    }
+    return b->priority() < a->priority();
+  });
+
+  // Loop over the list of owners and distribute the owned dump's not-owned
+  // sub-size among them according to their ownership priority and
+  // not-owning sub-size.
+  uint64_t already_attributed_sub_size = 0;
+  for (auto current_it = owners.begin(); current_it != owners.end();) {
+    // Find the position of the first owner with lower priority.
+    int current_priority = (*current_it)->priority();
+    auto next_it =
+        std::find_if(current_it, owners.end(), [current_priority](Edge* edge) {
+          return edge->priority() < current_priority;
+        });
+
+    // Compute the number of nodes which have the same priority as current.
+    size_t difference = std::distance(current_it, next_it);
+
+    // Visit the owners with the same priority in increasing order of
+    // not-owned sub-size, split the owned memory among them appropriately,
+    // and calculate their owning coefficients.
+    double attributed_not_owning_sub_size = 0;
+    for (; current_it != next_it; current_it++) {
+      uint64_t not_owning_sub_size =
+          (*current_it)->source()->not_owning_sub_size();
+      if (not_owning_sub_size > already_attributed_sub_size) {
+        attributed_not_owning_sub_size +=
+            (not_owning_sub_size - already_attributed_sub_size) / difference;
+        already_attributed_sub_size = not_owning_sub_size;
+      }
+
+      if (not_owning_sub_size != 0) {
+        double coeff = attributed_not_owning_sub_size / not_owning_sub_size;
+        (*current_it)->source()->set_owning_coefficient(coeff);
+      }
+      difference--;
+    }
+
+    // At the end of this loop, we should move to a node with a lower priority.
+    DCHECK(current_it == next_it);
+  }
+
+  // Attribute the remainder of the owned dump's not-owned sub-size to
+  // the dump itself and calculate its owned coefficient.
+  uint64_t not_owned_sub_size = node->not_owned_sub_size();
+  if (not_owned_sub_size != 0) {
+    double remainder_sub_size =
+        not_owned_sub_size - already_attributed_sub_size;
+    node->set_owned_coefficient(remainder_sub_size / not_owned_sub_size);
+  }
+}
+
 }  // namespace memory_instrumentation
\ No newline at end of file
diff --git a/services/resource_coordinator/memory_instrumentation/graph_processor.h b/services/resource_coordinator/memory_instrumentation/graph_processor.h
index f9a35653..6a94abfa 100644
--- a/services/resource_coordinator/memory_instrumentation/graph_processor.h
+++ b/services/resource_coordinator/memory_instrumentation/graph_processor.h
@@ -105,6 +105,59 @@
    * calculated [depth-first post-order traversal].
    */
   static void CalculateDumpSubSizes(GlobalDumpGraph::Node* node);
+
+  /**
+   * Calculate owned and owning coefficients of a memory allocator dump and
+   * its owners.
+   *
+   * The owning coefficient refers to the proportion of a dump's not-owning
+   * sub-size which is attributed to the dump (only relevant to owning MADs).
+   * Conversely, the owned coefficient is the proportion of a dump's
+   * not-owned sub-size, which is attributed to it (only relevant to owned
+   * MADs).
+   *
+   * The not-owned size of the owned dump is split among its owners in the
+   * order of the ownership importance as demonstrated by the following
+   * example:
+   *
+   *                                          memory allocator dumps
+   *                                   OWNED  OWNER1  OWNER2  OWNER3  OWNER4
+   *       not-owned sub-size [given]     10       -       -       -       -
+   *      not-owning sub-size [given]      -       6       7       5       8
+   *               importance [given]      -       2       2       1       0
+   *    attributed not-owned sub-size      2       -       -       -       -
+   *   attributed not-owning sub-size      -       3       4       0       1
+   *                owned coefficient   2/10       -       -       -       -
+   *               owning coefficient      -     3/6     4/7     0/5     1/8
+   *
+   * Explanation: Firstly, 6 bytes are split equally among OWNER1 and OWNER2
+   * (highest importance). OWNER2 owns one more byte, so its attributed
+   * not-owning sub-size is 6/2 + 1 = 4 bytes. OWNER3 is attributed no size
+   * because it is smaller than the owners with higher priority. However,
+   * OWNER4 is larger, so it's attributed the difference 8 - 7 = 1 byte.
+   * Finally, 2 bytes remain unattributed and are hence kept in the OWNED
+   * dump as attributed not-owned sub-size. The coefficients are then
+   * directly calculated as fractions of the sub-sizes and corresponding
+   * attributed sub-sizes.
+   *
+   * Note that we always assume that all ownerships of a dump overlap (e.g.
+   * OWNER3 is subsumed by both OWNER1 and OWNER2). Hence, the table could
+   * be alternatively represented as follows:
+   *
+   *                                 owned memory range
+   *              0   1   2    3    4    5    6        7        8   9  10
+   *   Priority 2 |  OWNER1 + OWNER2 (split)  | OWNER2 |
+   *   Priority 1 | (already attributed) |
+   *   Priority 0 | - - -  (already attributed)  - - - | OWNER4 |
+   *    Remainder | - - - - - (already attributed) - - - - - -  | OWNED |
+   *
+   * This method assumes that (1) the size of the dump [see calculateSizes()]
+   * and (2) the not-owned size of the dump and not-owning sub-sizes of its
+   * owners [see the first step of calculateEffectiveSizes()] have already
+   * been calculated. Note that the method doesn't make any assumptions about
+   * the order in which dumps are visited.
+   */
+  static void CalculateDumpOwnershipCoefficient(GlobalDumpGraph::Node* node);
 };
 
 }  // namespace memory_instrumentation
diff --git a/services/resource_coordinator/memory_instrumentation/graph_processor_unittest.cc b/services/resource_coordinator/memory_instrumentation/graph_processor_unittest.cc
index 6d7038d..01429d46 100644
--- a/services/resource_coordinator/memory_instrumentation/graph_processor_unittest.cc
+++ b/services/resource_coordinator/memory_instrumentation/graph_processor_unittest.cc
@@ -45,21 +45,21 @@
 
   void AssignTracingOverhead(base::StringPiece allocator,
                              GlobalDumpGraph* global_graph,
-                             GlobalDumpGraph::Process* process) {
+                             Process* process) {
     GraphProcessor::AssignTracingOverhead(allocator, global_graph, process);
   }
 
   GlobalDumpGraph::Node::Entry AggregateNumericWithNameForNode(
-      GlobalDumpGraph::Node* node,
+      Node* node,
       base::StringPiece name) {
     return GraphProcessor::AggregateNumericWithNameForNode(node, name);
   }
 
-  void AggregateNumericsRecursively(GlobalDumpGraph::Node* node) {
+  void AggregateNumericsRecursively(Node* node) {
     GraphProcessor::AggregateNumericsRecursively(node);
   }
 
-  void PropagateNumericsAndDiagnosticsRecursively(GlobalDumpGraph::Node* node) {
+  void PropagateNumericsAndDiagnosticsRecursively(Node* node) {
     GraphProcessor::PropagateNumericsAndDiagnosticsRecursively(node);
   }
 
@@ -68,7 +68,7 @@
     return GraphProcessor::AggregateSizeForDescendantNode(root, descendant);
   }
 
-  void CalculateSizeForNode(GlobalDumpGraph::Node* node) {
+  void CalculateSizeForNode(Node* node) {
     GraphProcessor::CalculateSizeForNode(node);
   }
 
@@ -76,6 +76,10 @@
     GraphProcessor::CalculateDumpSubSizes(node);
   }
 
+  void CalculateDumpOwnershipCoefficient(Node* node) {
+    GraphProcessor::CalculateDumpOwnershipCoefficient(node);
+  }
+
  protected:
   GlobalDumpGraph graph;
 };
@@ -605,4 +609,39 @@
   ASSERT_EQ(process_2->root()->not_owning_sub_size(), 5ul);
 }
 
+TEST_F(GraphProcessorTest, CalculateDumpOwnershipCoefficient) {
+  Process* process = graph.CreateGraphForProcess(1);
+
+  Node* owned = process->CreateNode(kEmptyGuid, "owned", false);
+  Node* owner_1 = process->CreateNode(kEmptyGuid, "owner1", false);
+  Node* owner_2 = process->CreateNode(kEmptyGuid, "owner2", false);
+  Node* owner_3 = process->CreateNode(kEmptyGuid, "owner3", false);
+  Node* owner_4 = process->CreateNode(kEmptyGuid, "owner4", false);
+
+  graph.AddNodeOwnershipEdge(owner_1, owned, 2);
+  graph.AddNodeOwnershipEdge(owner_2, owned, 2);
+  graph.AddNodeOwnershipEdge(owner_3, owned, 1);
+  graph.AddNodeOwnershipEdge(owner_4, owned, 0);
+
+  // Ensure the owned node has a size otherwise calculations will not happen.
+  owned->AddEntry("size", Node::Entry::kBytes, 10);
+
+  // Setup the owned/owning sub sizes.
+  owned->add_not_owned_sub_size(10);
+  owner_1->add_not_owning_sub_size(6);
+  owner_2->add_not_owning_sub_size(7);
+  owner_3->add_not_owning_sub_size(5);
+  owner_4->add_not_owning_sub_size(8);
+
+  // Perform the computation.
+  CalculateDumpOwnershipCoefficient(owned);
+
+  // Ensure that the coefficients are correct.
+  ASSERT_DOUBLE_EQ(owned->owned_coefficient(), 2.0 / 10.0);
+  ASSERT_DOUBLE_EQ(owner_1->owning_coefficient(), 3.0 / 6.0);
+  ASSERT_DOUBLE_EQ(owner_2->owning_coefficient(), 4.0 / 7.0);
+  ASSERT_DOUBLE_EQ(owner_3->owning_coefficient(), 0.0 / 5.0);
+  ASSERT_DOUBLE_EQ(owner_4->owning_coefficient(), 1.0 / 8.0);
+}
+
 }  // namespace memory_instrumentation
\ No newline at end of file
diff --git a/testing/buildbot/chromium.perf.fyi.json b/testing/buildbot/chromium.perf.fyi.json
index c2dfb214..a6059e0 100644
--- a/testing/buildbot/chromium.perf.fyi.json
+++ b/testing/buildbot/chromium.perf.fyi.json
@@ -101,7 +101,7 @@
       },
       {
         "args": [
-          "smoothness.key_silk_cases",
+          "system_health.common_desktop",
           "-v",
           "--upload-results",
           "--output-format=histograms",
@@ -111,7 +111,7 @@
           "--also-run-disabled-tests"
         ],
         "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.key_silk_cases",
+        "name": "system_health.common_desktop",
         "override_compile_targets": [
           "telemetry_perf_tests"
         ],
@@ -125,7 +125,7 @@
       },
       {
         "args": [
-          "smoothness.key_silk_cases",
+          "system_health.common_desktop",
           "-v",
           "--upload-results",
           "--output-format=histograms",
@@ -135,7 +135,55 @@
           "--also-run-disabled-tests"
         ],
         "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.key_silk_cases.reference",
+        "name": "system_health.common_desktop.reference",
+        "override_compile_targets": [
+          "telemetry_perf_tests"
+        ],
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "expiration": 36000,
+          "hard_timeout": 10800,
+          "ignore_task_failure": false,
+          "io_timeout": 3600
+        }
+      },
+      {
+        "args": [
+          "system_health.memory_desktop",
+          "-v",
+          "--upload-results",
+          "--output-format=histograms",
+          "--output-format=json-test-results",
+          "--browser=release",
+          "--xvfb",
+          "--also-run-disabled-tests"
+        ],
+        "isolate_name": "telemetry_perf_tests",
+        "name": "system_health.memory_desktop",
+        "override_compile_targets": [
+          "telemetry_perf_tests"
+        ],
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "expiration": 36000,
+          "hard_timeout": 10800,
+          "ignore_task_failure": false,
+          "io_timeout": 3600
+        }
+      },
+      {
+        "args": [
+          "system_health.memory_desktop",
+          "-v",
+          "--upload-results",
+          "--output-format=histograms",
+          "--output-format=json-test-results",
+          "--browser=reference",
+          "--xvfb",
+          "--also-run-disabled-tests"
+        ],
+        "isolate_name": "telemetry_perf_tests",
+        "name": "system_health.memory_desktop.reference",
         "override_compile_targets": [
           "telemetry_perf_tests"
         ],
diff --git a/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter b/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter
index d589370..2006403a 100644
--- a/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter
+++ b/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter
@@ -368,42 +368,6 @@
 -PolicyTest.ForceGoogleSafeSearch
 -ProfileBrowserTest.SendHPKPReport
 -ProfileBrowserTest.SendHPKPReportServerHangs
--ReferrerPolicyTest.ContextMenuOrigin
--ReferrerPolicyTest.ContextMenuRedirect
--ReferrerPolicyTest.History
--ReferrerPolicyTest.HttpsContextMenuOrigin
--ReferrerPolicyTest.HttpsContextMenuRedirect
--ReferrerPolicyTest.HttpLeftClickHTTPRedirectToHTTPSSameOrigin
--ReferrerPolicyTest.HttpLeftClickHTTPRedirectToHTTPSameOrigin
--ReferrerPolicyTest.HttpLeftClickHTTPRedirectToHTTPStrictOrigin
--ReferrerPolicyTest.HttpLeftClickHTTPSRedirectToHTTPOriginWhenCrossOrigin
--ReferrerPolicyTest.HttpLeftClickHTTPSRedirectToHTTPStrictOrigin
--ReferrerPolicyTest.HttpLeftClickRedirectDefaultNoFlag
--ReferrerPolicyTest.HttpLeftClickRedirectToHTTPOriginWhenCrossOrigin
--ReferrerPolicyTest.HttpLeftClickRedirectToHTTPSOriginWhenCrossOrigin
--ReferrerPolicyTest.HttpsDefault
--ReferrerPolicyTest.HttpsLeftClickOrigin
--ReferrerPolicyTest.HttpsLeftClickRedirect
--ReferrerPolicyTest.HttpsMiddleClickOrigin
--ReferrerPolicyTest.HttpsMiddleClickRedirect
--ReferrerPolicyTest.HttpsMiddleClickTargetBlankOrigin
--ReferrerPolicyTest.HttpsMiddleClickTargetBlankRedirect
--ReferrerPolicyTest.HttpsRedirect
--ReferrerPolicyTest.HttpsTargetBlankOrigin
--ReferrerPolicyTest.HttpsTargetBlankRedirect
--ReferrerPolicyTest.IFrame
--ReferrerPolicyTest.LeftClickOrigin
--ReferrerPolicyTest.LeftClickRedirect
--ReferrerPolicyTest.MiddleClickOrigin
--ReferrerPolicyTest.MiddleClickRedirect
--ReferrerPolicyTest.MiddleClickTargetBlankOrigin
--ReferrerPolicyTest.MiddleClickTargetBlankRedirect
--ReferrerPolicyTest.Origin
--ReferrerPolicyTest.Redirect
--ReferrerPolicyTest.RequestTabletSite
--ReferrerPolicyTest.TargetBlankOrigin
--ReferrerPolicyTest.TargetBlankRedirect
--ReferrerPolicyWithReduceReferrerGranularityFlagTest.HttpLeftClickRedirectDefaultFlag
 -RestartTest.CookiesClearedOnExit
 -RestartTest.LocalStorageClearedOnExit
 -RestartTest.Post
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index e4804b2..bfdc6a1 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -2410,8 +2410,6 @@
 crbug.com/788337 external/wpt/css/css-multicol/multicol-rule-004.xht [ Failure ]
 crbug.com/788337 external/wpt/css/css-multicol/multicol-rule-inset-000.xht [ Failure ]
 crbug.com/788337 external/wpt/css/css-multicol/multicol-rule-outset-000.xht [ Failure ]
-crbug.com/788337 external/wpt/css/css-multicol/multicol-rule-style-inset-001.xht [ Failure ]
-crbug.com/788337 external/wpt/css/css-multicol/multicol-rule-style-outset-001.xht [ Failure ]
 crbug.com/788337 external/wpt/css/css-multicol/multicol-span-all-003.xht [ Failure ]
 crbug.com/788337 external/wpt/css/css-multicol/multicol-span-all-child-001.xht [ Failure ]
 crbug.com/788337 external/wpt/css/css-multicol/multicol-span-all-child-002.xht [ Failure ]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-multicol/multicol-rule-style-groove-001-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-multicol/multicol-rule-style-groove-001-ref.xht
deleted file mode 100644
index a32a71e..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/css/css-multicol/multicol-rule-style-groove-001-ref.xht
+++ /dev/null
@@ -1,44 +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 Reftest Reference</title>
-  <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
-  <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-08-15 -->
-  <meta name="flags" content="ahem" />
-  <style type="text/css"><![CDATA[
-  body {margin: 8px;}
-
-  p
-  {
-  line-height: 1.25em;
-  margin: 1em 0em;
-  }
-
-  strong {line-height: 1;}
-
-  div
-  {
-  border-collapse: collapse;
-  border-left: orange groove 100px;
-  color: transparent;
-  display: table;
-  font: 6.25em/1 Ahem;
-  }
-
-  div + div
-  {
-  position: relative;
-  top: 10px;
-  }
-  ]]></style>
- </head>
- <body>
-
-  <p>Test passes if the 2 orange squares are <strong>identical</strong>.</p>
-
-  <div>T</div>
-
-  <div>T</div>
-
- </body>
-</html>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-multicol/multicol-rule-style-groove-001.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-multicol/multicol-rule-style-groove-001.xht
deleted file mode 100644
index 43a4a21..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/css/css-multicol/multicol-rule-style-groove-001.xht
+++ /dev/null
@@ -1,71 +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 Multi-column Layout Test: 'column-rule-style' groove</title>
-  <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
-  <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-08-15 -->
-  <link rel="help" href="http://www.w3.org/TR/css3-multicol/#crs" title="4.3. 'column-rule-style'" />
-  <link rel="match" href="multicol-rule-style-groove-001-ref.xht" />
-  <meta name="flags" content="ahem" />
-  <style type="text/css"><![CDATA[
-  body {margin: 8px;}
-
-  p
-  {
-  line-height: 1.25em;
-  margin: 1em 0em;
-  }
-
-  strong {line-height: 1;}
-
-  div {color: transparent;}
-
-  div#reference
-  {
-  border-collapse: collapse;
-  border-left: orange groove 100px;
-  font: 6.25em/1 Ahem;
-  display: table;
-  }
-
-  div#test
-  {
-  font: 1.25em/1 Ahem; /* equivalent to 20px/1 Ahem */
-  position: relative;
-  right: 40px;
-  top: 0.5em;
-  width: 9em;
-
-  column-count: 2;
-  column-gap: 5em;
-  column-rule: orange groove 5em;
-  }
-  ]]></style>
- </head>
-
- <body>
-
-  <p>Test passes if the 2 orange squares are <strong>identical</strong>.</p>
-
-  <div id="reference">T</div>
-
-  <div id="test">Le ft Co lu mn Ri gh Co lu mn</div>
-
-  <!--
-
-  Expected results
-    column-gap
-    column-rule
-     v=====v
-  *************
-  |Le|     |Ri|
-  |ft|     |gh|
-  |Co|     |Co|
-  |lu|     |lu|
-  |mn|     |mn|
-  *************
-
-  -->
-
- </body>
-</html>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-multicol/multicol-rule-style-inset-001.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-multicol/multicol-rule-style-inset-001.xht
deleted file mode 100644
index d50bec93..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/css/css-multicol/multicol-rule-style-inset-001.xht
+++ /dev/null
@@ -1,71 +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 Multi-column Layout Test: 'column-rule-style' inset</title>
-  <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
-  <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-08-15 -->
-  <link rel="help" href="http://www.w3.org/TR/css3-multicol/#crs" title="4.3. 'column-rule-style'" />
-  <link rel="match" href="multicol-rule-style-ridge-001-ref.xht" />
-  <meta name="flags" content="ahem" />
-  <style type="text/css"><![CDATA[
-  body {margin: 8px;}
-
-  p
-  {
-  line-height: 1.25em;
-  margin: 1em 0em;
-  }
-
-  strong {line-height: 1;}
-
-  div {color: transparent;}
-
-  div#reference
-  {
-  border-collapse: collapse;
-  border-left: orange inset 100px;
-  font: 6.25em/1 Ahem;
-  display: table;
-  }
-
-  div#test
-  {
-  font: 1.25em/1 Ahem; /* equivalent to 20px/1 Ahem */
-  position: relative;
-  right: 40px;
-  top: 0.5em;
-  width: 9em;
-
-  column-count: 2;
-  column-gap: 5em;
-  column-rule: orange inset 5em;
-  }
-  ]]></style>
- </head>
-
- <body>
-
-  <p>Test passes if the 2 orange squares are <strong>identical</strong>.</p>
-
-  <div id="reference">T</div>
-
-  <div id="test">Le ft Co lu mn Ri gh Co lu mn</div>
-
-  <!--
-
-  Expected results
-    column-gap
-    column-rule
-     v=====v
-  *************
-  |Le|     |Ri|
-  |ft|     |gh|
-  |Co|     |Co|
-  |lu|     |lu|
-  |mn|     |mn|
-  *************
-
-  -->
-
- </body>
-</html>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-multicol/multicol-rule-style-outset-001.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-multicol/multicol-rule-style-outset-001.xht
deleted file mode 100644
index ea8c332..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/css/css-multicol/multicol-rule-style-outset-001.xht
+++ /dev/null
@@ -1,71 +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 Multi-column Layout Test: 'column-rule-style' outset</title>
-  <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
-  <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-08-15 -->
-  <link rel="help" href="http://www.w3.org/TR/css3-multicol/#crs" title="4.3. 'column-rule-style'" />
-  <link rel="match" href="multicol-rule-style-groove-001-ref.xht" />
-  <meta name="flags" content="ahem" />
-  <style type="text/css"><![CDATA[
-  body {margin: 8px;}
-
-  p
-  {
-  line-height: 1.25em;
-  margin: 1em 0em;
-  }
-
-  strong {line-height: 1;}
-
-  div {color: transparent;}
-
-  div#reference
-  {
-  border-collapse: collapse;
-  border-left: orange outset 100px;
-  font: 6.25em/1 Ahem;
-  display: table;
-  }
-
-  div#test
-  {
-  font: 1.25em/1 Ahem; /* equivalent to 20px/1 Ahem */
-  position: relative;
-  right: 40px;
-  top: 0.5em;
-  width: 9em;
-
-  column-count: 2;
-  column-gap: 5em;
-  column-rule: orange outset 5em;
-  }
-  ]]></style>
- </head>
-
- <body>
-
-  <p>Test passes if the 2 orange squares are <strong>identical</strong>.</p>
-
-  <div id="reference">T</div>
-
-  <div id="test">Le ft Co lu mn Ri gh Co lu mn</div>
-
-  <!--
-
-  Expected results
-    column-gap
-    column-rule
-     v=====v
-  *************
-  |Le|     |Ri|
-  |ft|     |gh|
-  |Co|     |Co|
-  |lu|     |lu|
-  |mn|     |mn|
-  *************
-
-  -->
-
- </body>
-</html>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-multicol/multicol-rule-style-ridge-001-ref.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-multicol/multicol-rule-style-ridge-001-ref.xht
deleted file mode 100644
index 4da6ec8..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/css/css-multicol/multicol-rule-style-ridge-001-ref.xht
+++ /dev/null
@@ -1,44 +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 Reftest Reference</title>
-  <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
-  <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-08-15 -->
-  <meta name="flags" content="ahem" />
-  <style type="text/css"><![CDATA[
-  body {margin: 8px;}
-
-  p
-  {
-  line-height: 1.25em;
-  margin: 1em 0em;
-  }
-
-  strong {line-height: 1;}
-
-  div
-  {
-  border-collapse: collapse;
-  border-left: orange ridge 100px;
-  color: transparent;
-  display: table;
-  font: 6.25em/1 Ahem;
-  }
-
-  div + div
-  {
-  position: relative;
-  top: 10px;
-  }
-  ]]></style>
- </head>
- <body>
-
-  <p>Test passes if the 2 orange squares are <strong>identical</strong>.</p>
-
-  <div>T</div>
-
-  <div>T</div>
-
- </body>
-</html>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-multicol/multicol-rule-style-ridge-001.xht b/third_party/WebKit/LayoutTests/external/wpt/css/css-multicol/multicol-rule-style-ridge-001.xht
deleted file mode 100644
index 1cc97df..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/css/css-multicol/multicol-rule-style-ridge-001.xht
+++ /dev/null
@@ -1,71 +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 Multi-column Layout Test: 'column-rule-style' ridge</title>
-  <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
-  <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-08-15 -->
-  <link rel="help" href="http://www.w3.org/TR/css3-multicol/#crs" title="4.3. 'column-rule-style'" />
-  <link rel="match" href="multicol-rule-style-ridge-001-ref.xht" />
-  <meta name="flags" content="ahem" />
-  <style type="text/css"><![CDATA[
-  body {margin: 8px;}
-
-  p
-  {
-  line-height: 1.25em;
-  margin: 1em 0em;
-  }
-
-  strong {line-height: 1;}
-
-  div {color: transparent;}
-
-  div#reference
-  {
-  border-collapse: collapse;
-  border-left: orange ridge 100px;
-  font: 6.25em/1 Ahem;
-  display: table;
-  }
-
-  div#test
-  {
-  font: 1.25em/1 Ahem; /* equivalent to 20px/1 Ahem */
-  position: relative;
-  right: 40px;
-  top: 0.5em;
-  width: 9em;
-
-  column-count: 2;
-  column-gap: 5em;
-  column-rule: orange ridge 5em;
-  }
-  ]]></style>
- </head>
-
- <body>
-
-  <p>Test passes if the 2 orange squares are <strong>identical</strong>.</p>
-
-  <div id="reference">T</div>
-
-  <div id="test">Le ft Co lu mn Ri gh Co lu mn</div>
-
-  <!--
-
-  Expected results
-    column-gap
-    column-rule
-     v=====v
-  *************
-  |Le|     |Ri|
-  |ft|     |gh|
-  |Co|     |Co|
-  |lu|     |lu|
-  |mn|     |mn|
-  *************
-
-  -->
-
- </body>
-</html>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/http/tests/local/fileapi/resources/send-dragged-file-form-helper.js b/third_party/WebKit/LayoutTests/http/tests/fileapi/resources/send-file-form-helper.js
similarity index 81%
rename from third_party/WebKit/LayoutTests/http/tests/local/fileapi/resources/send-dragged-file-form-helper.js
rename to third_party/WebKit/LayoutTests/http/tests/fileapi/resources/send-file-form-helper.js
index 2caf7480..fd0a10d2 100644
--- a/third_party/WebKit/LayoutTests/http/tests/local/fileapi/resources/send-dragged-file-form-helper.js
+++ b/third_party/WebKit/LayoutTests/http/tests/fileapi/resources/send-file-form-helper.js
@@ -59,7 +59,7 @@
 //   on the web it is distinct when decoding but unified when encoding
 // - ¤ is inside Latin-1 and helps diagnose problems due to
 //   filesystem encoding or locale; again it is a "simple"
-//   substitution case and also ensures
+//   substitution case
 // - ≈ is inside IBM437 and helps diagnose problems due to filesystem
 //   encoding or locale
 // - ¥‾ are inside a single-byte range of ISO-2022-JP and help
@@ -93,9 +93,6 @@
 const kTestFallbackXUserDefined =
       kTestChars.replace(/[^\0-\x7F]/gu, x => `&#${x.codePointAt(0)};`);
 
-// Web server hosting helper CGI
-const kWebServer = 'http://127.0.0.1:8000';
-
 // formPostFileUploadTest - verifies multipart upload structure and
 // numeric character reference replacement for filenames, field names,
 // and field values.
@@ -106,12 +103,6 @@
 // UTF-8-compatible byte sequences appear in the formEncoding-encoded
 // uploaded data.
 //
-// Uses eventSender.beginDragWithFiles and related methods to upload
-// using drag-n-drop because that is currently the only file upload
-// mechanism available to Blink layout tests, likely leading to the
-// observed renderer crashes on POSIX-like systems using non-UTF-8
-// locales.
-//
 // Fields in the parameter object:
 //
 // - fileNameSource: purely explanatory and gives a clue about which
@@ -119,7 +110,7 @@
 //   the fileBaseName, or Unicode if no smaller-than-Unicode source
 //   contains all the characters. Used in the test name.
 // - fileBaseName: the not-necessarily-just-7-bit-ASCII file basename
-//   for the test file. Used in the test name.
+//   used for the constructed test file. Used in the test name.
 // - formEncoding: the acceptCharset of the form used to submit the
 //   test file. Used in the test name.
 // - expectedEncodedBaseName: the expected formEncoding-encoded
@@ -127,12 +118,6 @@
 //   numeric character references and non-7-bit-ASCII bytes seen
 //   through UTF-8 goggles; subsequences not interpretable as UTF-8
 //   have each byte represented here by \uFFFD REPLACEMENT CHARACTER.
-//
-// NOTE: This does not correctly account for varying representation of
-// combining characters across platforms and filesystems due to
-// Unicode normalization or similar platform-specific normalization
-// rules. For that reason none of the tests exercise such characters
-// or character sequences.
 const formPostFileUploadTest = ({
   fileNameSource,
   fileBaseName,
@@ -144,35 +129,30 @@
     if (document.readyState !== 'complete') {
       await new Promise(resolve => addEventListener('load', resolve));
     }
-    assert_own_property(
-        window,
-        'eventSender',
-        'This test relies on eventSender.beginDragWithFiles');
 
     const formTargetFrame = Object.assign(document.createElement('iframe'), {
       name: 'formtargetframe',
     });
-    document.body.prepend(formTargetFrame);
+    document.body.append(formTargetFrame);
     testCase.add_cleanup(() => {
       document.body.removeChild(formTargetFrame);
     });
 
     const form = Object.assign(document.createElement('form'), {
       acceptCharset: formEncoding,
-      action: `${kWebServer}/xmlhttprequest/resources/post-echo.cgi`,
+      action: '/xmlhttprequest/resources/post-echo.cgi',
       method: 'POST',
       enctype: 'multipart/form-data',
       target: formTargetFrame.name,
     });
-    // This element must be at the top of the viewport so it can be dragged to.
-    document.body.prepend(form);
+    document.body.append(form);
     testCase.add_cleanup(() => {
       document.body.removeChild(form);
     });
 
     // Used to verify that the browser agrees with the test about
     // which form charset is used.
-    form.appendChild(Object.assign(document.createElement('input'), {
+    form.append(Object.assign(document.createElement('input'), {
       type: 'hidden',
       name: '_charset_',
     }));
@@ -180,7 +160,7 @@
     // Used to verify that the browser agrees with the test about
     // field value replacement and encoding independently of file system
     // idiosyncracies.
-    form.appendChild(Object.assign(document.createElement('input'), {
+    form.append(Object.assign(document.createElement('input'), {
       type: 'hidden',
       name: 'filename',
       value: fileBaseName,
@@ -188,7 +168,7 @@
 
     // Same, but with name and value reversed to ensure field names
     // get the same treatment.
-    form.appendChild(Object.assign(document.createElement('input'), {
+    form.append(Object.assign(document.createElement('input'), {
       type: 'hidden',
       name: fileBaseName,
       value: 'filename',
@@ -198,35 +178,27 @@
       type: 'file',
       name: 'file',
     });
-    form.appendChild(fileInput);
+    form.append(fileInput);
 
-    const fileToDrop = `resources/${fileBaseName}`;
     // Removes c:\fakepath\ or other pseudofolder and returns just the
     // final component of filePath; allows both / and \ as segment
     // delimiters.
     const baseNameOfFilePath = filePath => filePath.split(/[\/\\]/).pop();
-    fileInput.onchange = event => {
-      assert_equals(
-          fileInput.files[0].name,
-          fileBaseName,
-          `Dropped file should be ${fileBaseName}`);
+    await new Promise(resolve => {
+      const dataTransfer = new DataTransfer;
+      dataTransfer.items.add(
+          new File([kTestChars], fileBaseName, {type: 'text/plain'}));
+      fileInput.files = dataTransfer.files;
       // For historical reasons .value will be prefixed with
-      // c:\fakepath\, but the basename should match the dropped file
-      // name exposed through the newer .files[0].name API. This check
+      // c:\fakepath\, but the basename should match the file name
+      // exposed through the newer .files[0].name API. This check
       // verifies that assumption.
       assert_equals(
           fileInput.files[0].name,
           baseNameOfFilePath(fileInput.value),
           `The basename of the field's value should match its files[0].name`);
       form.submit();
-    };
-    await new Promise(resolve => {
       formTargetFrame.onload = resolve;
-      eventSender.beginDragWithFiles([fileToDrop]);
-      const centerX = fileInput.offsetLeft + fileInput.offsetWidth / 2;
-      const centerY = fileInput.offsetTop + fileInput.offsetHeight / 2;
-      eventSender.mouseMoveTo(centerX, centerY);
-      eventSender.mouseUp();
     });
 
     const formDataText = formTargetFrame.contentDocument.body.textContent;
@@ -237,14 +209,14 @@
     assert_greater_than(
         formDataLines.length,
         2,
-        `${fileToDrop}: multipart form data must have at least 3 lines: ${
+        `${fileBaseName}: multipart form data must have at least 3 lines: ${
              JSON.stringify(formDataText)
            }`);
     const boundary = formDataLines[0];
     assert_equals(
         formDataLines[formDataLines.length - 1],
         boundary + '--',
-        `${fileToDrop}: multipart form data must end with ${boundary}--: ${
+        `${fileBaseName}: multipart form data must end with ${boundary}--: ${
              JSON.stringify(formDataText)
            }`);
     const expectedText = [
diff --git a/third_party/WebKit/LayoutTests/http/tests/fileapi/send-file-form-iso-2022-jp.html b/third_party/WebKit/LayoutTests/http/tests/fileapi/send-file-form-iso-2022-jp.html
new file mode 100644
index 0000000..8efa80a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/fileapi/send-file-form-iso-2022-jp.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Upload files in ISO-2022-JP form</title>
+<link rel="help"
+      href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data">
+<link rel="author" title="Benjamin C. Wiley Sittler"
+      href="mailto:bsittler@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/send-file-form-helper.js"></script>
+<script>
+'use strict';
+
+formPostFileUploadTest({
+  fileNameSource: 'ASCII',
+  fileBaseName: 'file-for-upload-in-form.txt',
+  formEncoding: 'ISO-2022-JP',
+  expectedEncodedBaseName: 'file-for-upload-in-form.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'x-user-defined',
+  fileBaseName: 'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt',
+  formEncoding: 'ISO-2022-JP',
+  expectedEncodedBaseName: (
+      'file-for-upload-in-form-&#63472;&#63379;&#63363;&#63392;.txt'),
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'windows-1252',
+  fileBaseName: 'file-for-upload-in-form-☺😂.txt',
+  formEncoding: 'ISO-2022-JP',
+  expectedEncodedBaseName: (
+      'file-for-upload-in-form-&#226;&#732;&#186;&#240;&#376;&#732;&#8218;.txt'),
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'JIS X 0201 and JIS X 0208',
+  fileBaseName: 'file-for-upload-in-form-★星★.txt',
+  formEncoding: 'ISO-2022-JP',
+  expectedEncodedBaseName: 'file-for-upload-in-form-\x1B$B!z@1!z\x1B(B.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'Unicode',
+  fileBaseName: 'file-for-upload-in-form-☺😂.txt',
+  formEncoding: 'ISO-2022-JP',
+  expectedEncodedBaseName: 'file-for-upload-in-form-&#9786;&#128514;.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'Unicode',
+  fileBaseName: `file-for-upload-in-form-${kTestChars}.txt`,
+  formEncoding: 'ISO-2022-JP',
+  expectedEncodedBaseName: `file-for-upload-in-form-${
+      kTestFallbackIso2022jp
+  }.txt`,
+});
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/fileapi/send-file-form-utf-8.html b/third_party/WebKit/LayoutTests/http/tests/fileapi/send-file-form-utf-8.html
new file mode 100644
index 0000000..2c4ed7f2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/fileapi/send-file-form-utf-8.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Upload files in UTF-8 form</title>
+<link rel="help"
+      href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data">
+<link rel="author" title="Benjamin C. Wiley Sittler"
+      href="mailto:bsittler@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/send-file-form-helper.js"></script>
+<script>
+'use strict';
+
+formPostFileUploadTest({
+  fileNameSource: 'ASCII',
+  fileBaseName: 'file-for-upload-in-form.txt',
+  formEncoding: 'UTF-8',
+  expectedEncodedBaseName: 'file-for-upload-in-form.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'x-user-defined',
+  fileBaseName: 'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt',
+  formEncoding: 'UTF-8',
+  expectedEncodedBaseName: (
+      'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt'),
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'windows-1252',
+  fileBaseName: 'file-for-upload-in-form-☺😂.txt',
+  formEncoding: 'UTF-8',
+  expectedEncodedBaseName: 'file-for-upload-in-form-☺😂.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'JIS X 0201 and JIS X 0208',
+  fileBaseName: 'file-for-upload-in-form-★星★.txt',
+  formEncoding: 'UTF-8',
+  expectedEncodedBaseName: 'file-for-upload-in-form-★星★.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'Unicode',
+  fileBaseName: 'file-for-upload-in-form-☺😂.txt',
+  formEncoding: 'UTF-8',
+  expectedEncodedBaseName: 'file-for-upload-in-form-☺😂.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'Unicode',
+  fileBaseName: `file-for-upload-in-form-${kTestChars}.txt`,
+  formEncoding: 'UTF-8',
+  expectedEncodedBaseName: `file-for-upload-in-form-${kTestChars}.txt`,
+});
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/fileapi/send-file-form-windows-1252.html b/third_party/WebKit/LayoutTests/http/tests/fileapi/send-file-form-windows-1252.html
new file mode 100644
index 0000000..eddc19d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/fileapi/send-file-form-windows-1252.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Upload files in Windows-1252 form</title>
+<link rel="help"
+      href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data">
+<link rel="author" title="Benjamin C. Wiley Sittler"
+      href="mailto:bsittler@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/send-file-form-helper.js"></script>
+<script>
+'use strict';
+
+formPostFileUploadTest({
+  fileNameSource: 'ASCII',
+  fileBaseName: 'file-for-upload-in-form.txt',
+  formEncoding: 'windows-1252',
+  expectedEncodedBaseName: 'file-for-upload-in-form.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'x-user-defined',
+  fileBaseName: 'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt',
+  formEncoding: 'windows-1252',
+  expectedEncodedBaseName: (
+      'file-for-upload-in-form-&#63472;&#63379;&#63363;&#63392;.txt'),
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'windows-1252',
+  fileBaseName: 'file-for-upload-in-form-☺😂.txt',
+  formEncoding: 'windows-1252',
+  expectedEncodedBaseName: 'file-for-upload-in-form-☺😂.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'JIS X 0201 and JIS X 0208',
+  fileBaseName: 'file-for-upload-in-form-★星★.txt',
+  formEncoding: 'windows-1252',
+  expectedEncodedBaseName: 'file-for-upload-in-form-&#9733;&#26143;&#9733;.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'Unicode',
+  fileBaseName: 'file-for-upload-in-form-☺😂.txt',
+  formEncoding: 'windows-1252',
+  expectedEncodedBaseName: 'file-for-upload-in-form-&#9786;&#128514;.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'Unicode',
+  fileBaseName: `file-for-upload-in-form-${kTestChars}.txt`,
+  formEncoding: 'windows-1252',
+  expectedEncodedBaseName: `file-for-upload-in-form-${
+      kTestFallbackWindows1252
+  }.txt`,
+});
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/fileapi/send-file-form-x-user-defined.html b/third_party/WebKit/LayoutTests/http/tests/fileapi/send-file-form-x-user-defined.html
new file mode 100644
index 0000000..93851e2e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/fileapi/send-file-form-x-user-defined.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Upload files in x-user-defined form</title>
+<link rel="help"
+      href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data">
+<link rel="author" title="Benjamin C. Wiley Sittler"
+      href="mailto:bsittler@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/send-file-form-helper.js"></script>
+<script>
+'use strict';
+
+formPostFileUploadTest({
+  fileNameSource: 'ASCII',
+  fileBaseName: 'file-for-upload-in-form.txt',
+  formEncoding: 'x-user-defined',
+  expectedEncodedBaseName: 'file-for-upload-in-form.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'x-user-defined',
+  fileBaseName: 'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt',
+  formEncoding: 'x-user-defined',
+  expectedEncodedBaseName: 'file-for-upload-in-form-𓃠.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'windows-1252',
+  fileBaseName: 'file-for-upload-in-form-☺😂.txt',
+  formEncoding: 'x-user-defined',
+  expectedEncodedBaseName: ('file-for-upload-in-form-' +
+                            '&#226;&#732;&#186;&#240;&#376;&#732;&#8218;.txt'),
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'JIS X 0201 and JIS X 0208',
+  fileBaseName: 'file-for-upload-in-form-★星★.txt',
+  formEncoding: 'x-user-defined',
+  expectedEncodedBaseName: 'file-for-upload-in-form-&#9733;&#26143;&#9733;.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'Unicode',
+  fileBaseName: 'file-for-upload-in-form-☺😂.txt',
+  formEncoding: 'x-user-defined',
+  expectedEncodedBaseName: 'file-for-upload-in-form-&#9786;&#128514;.txt',
+});
+
+formPostFileUploadTest({
+  fileNameSource: 'Unicode',
+  fileBaseName: `file-for-upload-in-form-${kTestChars}.txt`,
+  formEncoding: 'x-user-defined',
+  expectedEncodedBaseName: `file-for-upload-in-form-${
+      kTestFallbackXUserDefined
+  }.txt`,
+});
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/fileapi/send-file-form.html b/third_party/WebKit/LayoutTests/http/tests/fileapi/send-file-form.html
new file mode 100644
index 0000000..d0f12b3c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/fileapi/send-file-form.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Upload ASCII-named file in UTF-8 form</title>
+<link rel="help"
+      href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data">
+<link rel="author" title="Benjamin C. Wiley Sittler"
+      href="mailto:bsittler@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/send-file-form-helper.js"></script>
+<script>
+'use strict';
+
+formPostFileUploadTest({
+  fileNameSource: 'ASCII',
+  fileBaseName: 'file-for-upload-in-form.txt',
+  formEncoding: 'UTF-8',
+  expectedEncodedBaseName: 'file-for-upload-in-form.txt',
+});
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/local/fileapi/resources/select-dragged-file-input-helper.js b/third_party/WebKit/LayoutTests/http/tests/local/fileapi/resources/select-dragged-file-input-helper.js
new file mode 100644
index 0000000..6289b0b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/local/fileapi/resources/select-dragged-file-input-helper.js
@@ -0,0 +1,143 @@
+'use strict';
+
+// Rationale for this particular test character sequence, which is
+// used in filenames and also in file contents:
+//
+// - ABC~ ensures the string starts with something we can read to
+//   ensure it is from the correct source.
+// - ‾¥ are inside JIS and help diagnose problems due to filesystem
+//   encoding or locale
+// - ≈ is inside IBM437 and helps diagnose problems due to filesystem
+//   encoding or locale
+// - ¤ is inside Latin-1 and helps diagnose problems due to
+//   filesystem encoding or locale
+// - ï½¥ is inside JIS and single-byte in some variants and helps
+//   diagnose problems due to filesystem encoding or locale
+// - ・ is inside JIS and double-byte and helps diagnose problems
+//   due to filesystem encoding or locale
+// - • is inside Windows-1252 and helps diagnose problems due to
+//   filesystem encoding or locale and also ensures these aren't
+//   accidentally turned into e.g. control codes
+// - ∙ is inside IBM437 and helps diagnose problems due to filesystem
+//   encoding or locale
+// - · is inside Latin-1 and helps diagnose problems due to
+//   filesystem encoding or locale
+// - ☼ is inside IBM437 shadowing C0 and helps diagnose problems due to
+//   filesystem encoding or locale and also ensures these aren't
+//   accidentally turned into e.g. control codes
+// - ★ is inside JIS on a non-Kanji page and makes correct output easier to spot
+// - 星 is inside JIS on a Kanji page and makes correct output easier to spot
+// - 🌟 is outside the BMP
+// - 星 repeated here ensures the correct codec state is used after a non-BMP
+//   character
+// - ★ repeated here also makes correct output easier to spot
+// - ☼ is inside IBM437 shadowing C0 and helps diagnose problems due to
+//   filesystem encoding or locale and also ensures these aren't
+//   accidentally turned into e.g. control codes
+// - · is inside Latin-1 and helps diagnose problems due to
+//   filesystem encoding or locale
+// - ∙ is inside IBM437 and helps diagnose problems due to filesystem
+//   encoding or locale
+// - • is inside Windows-1252 and again helps diagnose problems
+//   due to filesystem encoding or locale
+// - ・ is inside a double-byte range of JIS and helps diagnose
+//   problems due to filesystem encoding or locale
+// - ï½¥ is inside a single-byte range of JIS in some variants and helps
+//   diagnose problems due to filesystem encoding or locale
+// - ¤ is inside Latin-1 and helps diagnose problems due to
+//   filesystem encoding or locale
+// - ≈ is inside IBM437 and helps diagnose problems due to filesystem
+//   encoding or locale
+// - ¥‾ are inside a single-byte range of JIS and help
+//   diagnose problems due to filesystem encoding or locale
+// - ~XYZ ensures earlier errors don't lead to misencoding of
+//   simple ASCII
+//
+// Overall the near-symmetry makes common I18N mistakes like
+// off-by-1-after-non-BMP easier to spot. All the characters
+// are also allowed in Windows Unicode filenames.
+const kTestChars = 'ABC~‾¥≈¤ï½¥ãƒ»•∙·â˜¼â˜…星🌟星★☼·âˆ™•・・¤≈¥‾~XYZ';
+
+// fileInputTest - verifies <input type=file> single file selection.
+//
+// Uses eventSender.beginDragWithFiles and related methods to select
+// using drag-n-drop because that is currently the only file selection
+// mechanism available to Blink layout tests, likely leading to the
+// observed renderer crashes on POSIX-like systems using non-UTF-8
+// locales.
+//
+// Fields in the parameter object:
+//
+// - fileNameSource: purely explanatory and gives a clue about which
+//   character encoding is the source for the non-7-bit-ASCII parts of
+//   the fileBaseName, or Unicode if no smaller-than-Unicode source
+//   contains all the characters. Used in the test name.
+// - fileBaseName: the not-necessarily-just-7-bit-ASCII file basename
+//   for the test file. Used in the test name.
+//
+// NOTE: This does not correctly account for varying representation of
+// combining characters across platforms and filesystems due to
+// Unicode normalization or similar platform-specific normalization
+// rules. For that reason none of the tests exercise such characters
+// or character sequences.
+const fileInputTest = ({
+  fileNameSource,
+  fileBaseName,
+}) => {
+  promise_test(async testCase => {
+
+    if (document.readyState !== 'complete') {
+      await new Promise(resolve => addEventListener('load', resolve));
+    }
+    assert_own_property(
+        window,
+        'eventSender',
+        'This test relies on eventSender.beginDragWithFiles');
+
+    const fileInput = Object.assign(document.createElement('input'), {
+      type: 'file',
+    });
+
+    // This element must be at the top of the viewport so it can be dragged to.
+    document.body.prepend(fileInput);
+    testCase.add_cleanup(() => {
+      document.body.removeChild(fileInput);
+    });
+
+    eventSender.beginDragWithFiles([`resources/${fileBaseName}`]);
+    const centerX = fileInput.offsetLeft + fileInput.offsetWidth / 2;
+    const centerY = fileInput.offsetTop + fileInput.offsetHeight / 2;
+    eventSender.mouseMoveTo(centerX, centerY);
+    eventSender.mouseUp();
+    // eventSender is synchronous so we do not wait for onchange
+    assert_equals(
+        fileInput.files[0].name,
+        fileBaseName,
+        `Dropped file should be ${fileBaseName}`);
+    // Removes c:\fakepath\ or other pseudofolder and returns just the
+    // final component of filePath; allows both / and \ as segment
+    // delimiters.
+    const baseNameOfFilePath = filePath => filePath.split(/[\/\\]/).pop();
+    // For historical reasons .value will be prefixed with
+    // c:\fakepath\, but the basename should match the dropped file
+    // name exposed through the newer .files[0].name API. This check
+    // verifies that assumption.
+    assert_equals(
+        fileInput.files[0].name,
+        baseNameOfFilePath(fileInput.value),
+        `The basename of the field's value should match its files[0].name`);
+    // Only by fetching the file can we be sure the file actually
+    // exists and the host filesystem is actually used. Before this
+    // point the dragged-in filename from eventSender is not actually
+    // checked against the host filesystem.
+    const fileObjectUrl = URL.createObjectURL(fileInput.files[0]);
+    testCase.add_cleanup(() => {
+      URL.revokeObjectURL(fileObjectUrl);
+    });
+    const fileContents = await (await fetch(fileObjectUrl)).text();
+    assert_equals(
+        fileContents,
+        kTestChars,
+        `The file should contain ${kTestChars}`);
+  }, `Select ${fileBaseName} (${fileNameSource}) in a file input`);
+};
diff --git a/third_party/WebKit/LayoutTests/http/tests/local/fileapi/send-dragged-file-form-utf-8.html b/third_party/WebKit/LayoutTests/http/tests/local/fileapi/select-dragged-file-input-utf-8.html
similarity index 60%
rename from third_party/WebKit/LayoutTests/http/tests/local/fileapi/send-dragged-file-form-utf-8.html
rename to third_party/WebKit/LayoutTests/http/tests/local/fileapi/select-dragged-file-input-utf-8.html
index 41ed0055..516aace 100644
--- a/third_party/WebKit/LayoutTests/http/tests/local/fileapi/send-dragged-file-form-utf-8.html
+++ b/third_party/WebKit/LayoutTests/http/tests/local/fileapi/select-dragged-file-input-utf-8.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <meta charset="utf-8">
-<title>Upload files in UTF-8 form</title>
+<title>Select UTF-8-named files in a file input</title>
 <link rel="help"
-      href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data">
+      href="https://html.spec.whatwg.org/multipage/input.html#file-upload-state-(type=file)">
 <link rel="author" title="Benjamin C. Wiley Sittler"
       href="mailto:bsittler@chromium.org">
 <script src="../../../../resources/testharness.js"></script>
 <script src="../../../../resources/testharnessreport.js"></script>
-<script src="resources/send-dragged-file-form-helper.js"></script>
+<script src="resources/select-dragged-file-input-helper.js"></script>
 <!--
 
  NOTE: Blink renderer crashes are expected on non-Windows hosts using
@@ -27,47 +27,34 @@
 <script>
 'use strict';
 
-formPostFileUploadTest({
+fileInputTest({
   fileNameSource: 'ASCII',
   fileBaseName: 'file-for-drag-to-send3.txt',
-  formEncoding: 'UTF-8',
-  expectedEncodedBaseName: 'file-for-drag-to-send3.txt',
 });
 
-formPostFileUploadTest({
+fileInputTest({
   fileNameSource: 'x-user-defined',
   fileBaseName: 'file-for-drag-to-send3-\uF7F0\uF793\uF783\uF7A0.txt',
-  formEncoding: 'UTF-8',
-  expectedEncodedBaseName: (
-      'file-for-drag-to-send3-\uF7F0\uF793\uF783\uF7A0.txt'),
 });
 
-formPostFileUploadTest({
+fileInputTest({
   fileNameSource: 'windows-1252',
   fileBaseName: 'file-for-drag-to-send3-☺😂.txt',
-  formEncoding: 'UTF-8',
-  expectedEncodedBaseName: 'file-for-drag-to-send3-☺😂.txt',
 });
 
-formPostFileUploadTest({
+fileInputTest({
   fileNameSource: 'JIS X 0201 and JIS X 0208',
   fileBaseName: 'file-for-drag-to-send3-★星★.txt',
-  formEncoding: 'UTF-8',
-  expectedEncodedBaseName: 'file-for-drag-to-send3-★星★.txt',
 });
 
-formPostFileUploadTest({
+fileInputTest({
   fileNameSource: 'Unicode',
   fileBaseName: 'file-for-drag-to-send3-☺😂.txt',
-  formEncoding: 'UTF-8',
-  expectedEncodedBaseName: 'file-for-drag-to-send3-☺😂.txt',
 });
 
-formPostFileUploadTest({
+fileInputTest({
   fileNameSource: 'Unicode',
   fileBaseName: `file-for-drag-to-send3-${kTestChars}.txt`,
-  formEncoding: 'UTF-8',
-  expectedEncodedBaseName: `file-for-drag-to-send3-${kTestChars}.txt`,
 });
 
 </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/local/fileapi/select-dragged-file-input.html b/third_party/WebKit/LayoutTests/http/tests/local/fileapi/select-dragged-file-input.html
new file mode 100644
index 0000000..d2f2682
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/local/fileapi/select-dragged-file-input.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Select ASCII-named file in a file input</title>
+<link rel="help"
+      href="https://html.spec.whatwg.org/multipage/input.html#file-upload-state-(type=file)">
+<link rel="author" title="Benjamin C. Wiley Sittler"
+      href="mailto:bsittler@chromium.org">
+<script src="../../../../resources/testharness.js"></script>
+<script src="../../../../resources/testharnessreport.js"></script>
+<script src="resources/select-dragged-file-input-helper.js"></script>
+<script>
+'use strict';
+
+fileInputTest({
+  fileNameSource: 'ASCII',
+  fileBaseName: 'file-for-drag-to-send3.txt',
+});
+
+</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/local/fileapi/send-dragged-file-form-iso-2022-jp.html b/third_party/WebKit/LayoutTests/http/tests/local/fileapi/send-dragged-file-form-iso-2022-jp.html
deleted file mode 100644
index 16875156..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/local/fileapi/send-dragged-file-form-iso-2022-jp.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>Upload files in ISO-2022-JP form</title>
-<link rel="help"
-      href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data">
-<link rel="author" title="Benjamin C. Wiley Sittler"
-      href="mailto:bsittler@chromium.org">
-<script src="../../../../resources/testharness.js"></script>
-<script src="../../../../resources/testharnessreport.js"></script>
-<script src="resources/send-dragged-file-form-helper.js"></script>
-<!--
-
- NOTE: Blink renderer crashes are expected on non-Windows hosts using
- filenames containing characters from outside ASCII. Use a UTF-8
- locale to prevent this, e.g. with:
-
- bash$ export LC_ALL=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 LANG=en_US.UTF-8
-
- Any other locale should work too provided it uses UTF-8 character
- encoding.
-
- Test failures are expected on Windows when using any system "ANSI"
- codepage other than windows-1252. To fix this, upgrade your system's
- Win32.pm Perl module to the latest version.
-
-  -->
-<script>
-'use strict';
-
-formPostFileUploadTest({
-  fileNameSource: 'ASCII',
-  fileBaseName: 'file-for-drag-to-send3.txt',
-  formEncoding: 'ISO-2022-JP',
-  expectedEncodedBaseName: 'file-for-drag-to-send3.txt',
-});
-
-formPostFileUploadTest({
-  fileNameSource: 'x-user-defined',
-  fileBaseName: 'file-for-drag-to-send3-\uF7F0\uF793\uF783\uF7A0.txt',
-  formEncoding: 'ISO-2022-JP',
-  expectedEncodedBaseName: (
-      'file-for-drag-to-send3-&#63472;&#63379;&#63363;&#63392;.txt'),
-});
-
-formPostFileUploadTest({
-  fileNameSource: 'windows-1252',
-  fileBaseName: 'file-for-drag-to-send3-☺😂.txt',
-  formEncoding: 'ISO-2022-JP',
-  expectedEncodedBaseName: (
-      'file-for-drag-to-send3-&#226;&#732;&#186;&#240;&#376;&#732;&#8218;.txt'),
-});
-
-formPostFileUploadTest({
-  fileNameSource: 'JIS X 0201 and JIS X 0208',
-  fileBaseName: 'file-for-drag-to-send3-★星★.txt',
-  formEncoding: 'ISO-2022-JP',
-  expectedEncodedBaseName: 'file-for-drag-to-send3-\x1B$B!z@1!z\x1B(B.txt',
-});
-
-formPostFileUploadTest({
-  fileNameSource: 'Unicode',
-  fileBaseName: 'file-for-drag-to-send3-☺😂.txt',
-  formEncoding: 'ISO-2022-JP',
-  expectedEncodedBaseName: 'file-for-drag-to-send3-&#9786;&#128514;.txt',
-});
-
-formPostFileUploadTest({
-  fileNameSource: 'Unicode',
-  fileBaseName: `file-for-drag-to-send3-${kTestChars}.txt`,
-  formEncoding: 'ISO-2022-JP',
-  expectedEncodedBaseName: `file-for-drag-to-send3-${
-      kTestFallbackIso2022jp
-  }.txt`,
-});
-
-</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/local/fileapi/send-dragged-file-form-windows-1252.html b/third_party/WebKit/LayoutTests/http/tests/local/fileapi/send-dragged-file-form-windows-1252.html
deleted file mode 100644
index 3b73040..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/local/fileapi/send-dragged-file-form-windows-1252.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>Upload files in Windows-1252 form</title>
-<link rel="help"
-      href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data">
-<link rel="author" title="Benjamin C. Wiley Sittler"
-      href="mailto:bsittler@chromium.org">
-<script src="../../../../resources/testharness.js"></script>
-<script src="../../../../resources/testharnessreport.js"></script>
-<script src="resources/send-dragged-file-form-helper.js"></script>
-<!--
-
- NOTE: Blink renderer crashes are expected on non-Windows hosts using
- filenames containing characters from outside ASCII. Use a UTF-8
- locale to prevent this, e.g. with:
-
- bash$ export LC_ALL=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 LANG=en_US.UTF-8
-
- Any other locale should work too provided it uses UTF-8 character
- encoding.
-
- Test failures are expected on Windows when using any system "ANSI"
- codepage other than windows-1252. To fix this, upgrade your system's
- Win32.pm Perl module to the latest version.
-
-  -->
-<script>
-'use strict';
-
-formPostFileUploadTest({
-  fileNameSource: 'ASCII',
-  fileBaseName: 'file-for-drag-to-send3.txt',
-  formEncoding: 'windows-1252',
-  expectedEncodedBaseName: 'file-for-drag-to-send3.txt',
-});
-
-formPostFileUploadTest({
-  fileNameSource: 'x-user-defined',
-  fileBaseName: 'file-for-drag-to-send3-\uF7F0\uF793\uF783\uF7A0.txt',
-  formEncoding: 'windows-1252',
-  expectedEncodedBaseName: (
-      'file-for-drag-to-send3-&#63472;&#63379;&#63363;&#63392;.txt'),
-});
-
-formPostFileUploadTest({
-  fileNameSource: 'windows-1252',
-  fileBaseName: 'file-for-drag-to-send3-☺😂.txt',
-  formEncoding: 'windows-1252',
-  expectedEncodedBaseName: 'file-for-drag-to-send3-☺😂.txt',
-});
-
-formPostFileUploadTest({
-  fileNameSource: 'JIS X 0201 and JIS X 0208',
-  fileBaseName: 'file-for-drag-to-send3-★星★.txt',
-  formEncoding: 'windows-1252',
-  expectedEncodedBaseName: 'file-for-drag-to-send3-&#9733;&#26143;&#9733;.txt',
-});
-
-formPostFileUploadTest({
-  fileNameSource: 'Unicode',
-  fileBaseName: 'file-for-drag-to-send3-☺😂.txt',
-  formEncoding: 'windows-1252',
-  expectedEncodedBaseName: 'file-for-drag-to-send3-&#9786;&#128514;.txt',
-});
-
-formPostFileUploadTest({
-  fileNameSource: 'Unicode',
-  fileBaseName: `file-for-drag-to-send3-${kTestChars}.txt`,
-  formEncoding: 'windows-1252',
-  expectedEncodedBaseName: `file-for-drag-to-send3-${
-      kTestFallbackWindows1252
-  }.txt`,
-});
-
-</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/local/fileapi/send-dragged-file-form-x-user-defined.html b/third_party/WebKit/LayoutTests/http/tests/local/fileapi/send-dragged-file-form-x-user-defined.html
deleted file mode 100644
index 0f7d3c52..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/local/fileapi/send-dragged-file-form-x-user-defined.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>Upload files in x-user-defined form</title>
-<link rel="help"
-      href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data">
-<link rel="author" title="Benjamin C. Wiley Sittler"
-      href="mailto:bsittler@chromium.org">
-<script src="../../../../resources/testharness.js"></script>
-<script src="../../../../resources/testharnessreport.js"></script>
-<script src="resources/send-dragged-file-form-helper.js"></script>
-<!--
-
- NOTE: Blink renderer crashes are expected on non-Windows hosts using
- filenames containing characters from outside ASCII. Use a UTF-8
- locale to prevent this, e.g. with:
-
- bash$ export LC_ALL=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 LANG=en_US.UTF-8
-
- Any other locale should work too provided it uses UTF-8 character
- encoding.
-
- Test failures are expected on Windows when using any system "ANSI"
- codepage other than windows-1252. To fix this, upgrade your system's
- Win32.pm Perl module to the latest version.
-
-  -->
-<script>
-'use strict';
-
-formPostFileUploadTest({
-  fileNameSource: 'ASCII',
-  fileBaseName: 'file-for-drag-to-send3.txt',
-  formEncoding: 'x-user-defined',
-  expectedEncodedBaseName: 'file-for-drag-to-send3.txt',
-});
-
-formPostFileUploadTest({
-  fileNameSource: 'x-user-defined',
-  fileBaseName: 'file-for-drag-to-send3-\uF7F0\uF793\uF783\uF7A0.txt',
-  formEncoding: 'x-user-defined',
-  expectedEncodedBaseName: 'file-for-drag-to-send3-𓃠.txt',
-});
-
-formPostFileUploadTest({
-  fileNameSource: 'windows-1252',
-  fileBaseName: 'file-for-drag-to-send3-☺😂.txt',
-  formEncoding: 'x-user-defined',
-  expectedEncodedBaseName: ('file-for-drag-to-send3-' +
-                            '&#226;&#732;&#186;&#240;&#376;&#732;&#8218;.txt'),
-});
-
-formPostFileUploadTest({
-  fileNameSource: 'JIS X 0201 and JIS X 0208',
-  fileBaseName: 'file-for-drag-to-send3-★星★.txt',
-  formEncoding: 'x-user-defined',
-  expectedEncodedBaseName: 'file-for-drag-to-send3-&#9733;&#26143;&#9733;.txt',
-});
-
-formPostFileUploadTest({
-  fileNameSource: 'Unicode',
-  fileBaseName: 'file-for-drag-to-send3-☺😂.txt',
-  formEncoding: 'x-user-defined',
-  expectedEncodedBaseName: 'file-for-drag-to-send3-&#9786;&#128514;.txt',
-});
-
-formPostFileUploadTest({
-  fileNameSource: 'Unicode',
-  fileBaseName: `file-for-drag-to-send3-${kTestChars}.txt`,
-  formEncoding: 'x-user-defined',
-  expectedEncodedBaseName: `file-for-drag-to-send3-${
-      kTestFallbackXUserDefined
-  }.txt`,
-});
-
-</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/local/fileapi/send-dragged-file-form.html b/third_party/WebKit/LayoutTests/http/tests/local/fileapi/send-dragged-file-form.html
deleted file mode 100644
index d517c73..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/local/fileapi/send-dragged-file-form.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>Upload ASCII-named file in UTF-8 form</title>
-<link rel="help"
-      href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data">
-<link rel="author" title="Benjamin C. Wiley Sittler"
-      href="mailto:bsittler@chromium.org">
-<script src="../../../../resources/testharness.js"></script>
-<script src="../../../../resources/testharnessreport.js"></script>
-<script src="resources/send-dragged-file-form-helper.js"></script>
-<script>
-'use strict';
-
-formPostFileUploadTest({
-  fileNameSource: 'ASCII',
-  fileBaseName: 'file-for-drag-to-send3.txt',
-  formEncoding: 'UTF-8',
-  expectedEncodedBaseName: 'file-for-drag-to-send3.txt',
-});
-
-</script>
diff --git a/third_party/WebKit/Source/devtools/front_end/main/Main.js b/third_party/WebKit/Source/devtools/front_end/main/Main.js
index 63f4172..6a22e093f 100644
--- a/third_party/WebKit/Source/devtools/front_end/main/Main.js
+++ b/third_party/WebKit/Source/devtools/front_end/main/Main.js
@@ -163,7 +163,7 @@
     Runtime.experiments.setDefaultExperiments([
       'continueToLocationMarkers', 'autoAttachToCrossProcessSubframes', 'objectPreviews', 'persistence2',
       'networkGroupingRequests', 'timelineColorByProduct', 'accessibilityInspection', 'logManagement',
-      'performanceMonitor', 'stepIntoAsync'
+      'performanceMonitor', 'stepIntoAsync', 'colorContrastRatio'
     ]);
   }
 
diff --git a/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp b/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
index 6247f8e0..07de959 100644
--- a/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
+++ b/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
@@ -1309,6 +1309,7 @@
     exception_state.ThrowDOMException(
         kInvalidAccessError,
         "The sender was not created by this peer connection.");
+    return;
   }
 
   if (!peer_handler_->RemoveTrack(sender->web_sender())) {
diff --git a/tools/binary_size/libsupersize/archive.py b/tools/binary_size/libsupersize/archive.py
index 27223bb..b2b7ed765 100644
--- a/tools/binary_size/libsupersize/archive.py
+++ b/tools/binary_size/libsupersize/archive.py
@@ -589,33 +589,9 @@
   return metadata
 
 
-def CreateSectionSizesAndSymbols(
-    map_path, elf_path, tool_prefix, output_directory,
-    track_string_literals=True):
-  """Creates sections sizes and symbols for a SizeInfo.
-
-  Args:
-    map_path: Path to the linker .map(.gz) file to parse.
-    elf_path: Path to the corresponding unstripped ELF file. Used to find symbol
-        aliases and inlined functions. Can be None.
-    tool_prefix: Prefix for c++filt & nm (required).
-    output_directory: Build output directory. If None, source_paths and symbol
-        alias information will not be recorded.
-    track_string_literals: Whether to break down "** merge string" sections into
-        smaller symbols (requires output_directory).
-  """
-  source_mapper = None
-  if output_directory:
-    # Start by finding the elf_object_paths, so that nm can run on them while
-    # the linker .map is being parsed.
-    logging.info('Parsing ninja files.')
-    source_mapper, elf_object_paths = ninja_parser.Parse(
-        output_directory, elf_path)
-    logging.debug('Parsed %d .ninja files.', source_mapper.parsed_file_count)
-    assert not elf_path or elf_object_paths, (
-        'Failed to find link command in ninja files for ' +
-        os.path.relpath(elf_path, output_directory))
-
+def _ParseElfInfo(map_path, elf_path, tool_prefix, output_directory,
+    track_string_literals, elf_object_paths):
+  """Adds Elf section sizes and symbols."""
   if elf_path:
     # Run nm on the elf file to retrieve the list of symbol names per-address.
     # This list is required because the .map file contains only a single name
@@ -709,16 +685,13 @@
             # is fast enough since len(merge_string_syms) < 10.
             raw_symbols[idx:idx + 1] = literal_syms
 
-  _ExtractSourcePathsAndNormalizeObjectPaths(raw_symbols, source_mapper)
-  logging.info('Converting excessive aliases into shared-path symbols')
-  _CompactLargeAliasesIntoSharedSymbols(raw_symbols)
   logging.debug('Connecting nm aliases')
   _ConnectNmAliases(raw_symbols)
   return section_sizes, raw_symbols
 
 
 def _ComputePakFileSymbols(
-    file_name, file_size, contents, res_info, symbols_by_name):
+    file_name, file_size, contents, res_info, symbols_by_id):
   total = 12 + 6  # Header size plus extra offset
   id_map = {id(v): k
             for k, v in sorted(contents.resources.items(), reverse=True)}
@@ -729,22 +702,20 @@
     section_name = models.SECTION_PAK_TRANSLATIONS
   else:
     section_name = models.SECTION_PAK_NONTRANSLATED
-  object_path = path_util.ToSrcRootRelative(file_name)
   for resource_id in sorted(contents.resources):
     if resource_id in alias_map:
       # 4 extra bytes of metadata (2 16-bit ints)
       size = 4
-      name = res_info[alias_map[resource_id]][0]
+      resource_id = alias_map[resource_id]
     else:
       # 6 extra bytes of metadata (1 32-bit int, 1 16-bit int)
       size = len(contents.resources[resource_id]) + 6
       name, source_path = res_info[resource_id]
-      if name not in symbols_by_name:
+      if resource_id not in symbols_by_id:
         full_name = '{}: {}'.format(source_path, name)
-        symbols_by_name[name] = models.Symbol(
-            section_name, 0, address=resource_id, full_name=full_name,
-            source_path=source_path, object_path=object_path)
-    symbols_by_name[name].size += size
+        symbols_by_id[resource_id] = models.Symbol(
+            section_name, 0, address=resource_id, full_name=full_name)
+    symbols_by_id[resource_id].size += size
     total += size
   assert file_size == total, (
       '{} bytes in pak file not accounted for'.format(file_size - total))
@@ -759,22 +730,36 @@
   return res_info
 
 
-def _AddPakSymbols(section_sizes, raw_symbols, symbols_by_name):
-  pak_symbols = sorted(symbols_by_name.values(),
+def _ParsePakSymbols(object_paths, output_directory, symbols_by_id):
+  for path in object_paths:
+    whitelist_path = os.path.join(output_directory, path + '.whitelist')
+    if (not os.path.exists(whitelist_path)
+        or os.path.getsize(whitelist_path) == 0):
+      continue
+    with open(whitelist_path, 'r') as f:
+      for line in f:
+        resource_id = int(line.rstrip())
+        # There may be object files in static libraries that are removed by the
+        # linker when there are no external references to its symbols. These
+        # files may be included in object_paths which our apk does not use,
+        # resulting in resource_ids that don't end up being in the final apk.
+        if resource_id not in symbols_by_id:
+          continue
+        symbols_by_id[resource_id].object_path = path
+
+  raw_symbols = sorted(symbols_by_id.values(),
                        key=lambda s: (s.section_name, s.address))
-  for symbol in pak_symbols:
+  section_sizes = {}
+  for symbol in raw_symbols:
     prev = section_sizes.setdefault(symbol.section_name, 0)
     section_sizes[symbol.section_name] = prev + symbol.size
-  raw_symbols.extend(pak_symbols)
+  return section_sizes, raw_symbols
 
 
-def AddApkInfo(section_sizes, raw_symbols, apk_path, output_directory,
-               metadata, apk_elf_result):
-  """Uses apk and output directory add pak and size info."""
+def _ParseApkSectionSizes(section_sizes, metadata, apk_elf_result):
   if metadata:
     logging.debug('Extracting section sizes from .so within .apk')
-    unstripped_section_sizes = section_sizes
-    apk_build_id, section_sizes = apk_elf_result.get()
+    apk_build_id, apk_section_sizes = apk_elf_result.get()
     assert apk_build_id == metadata[models.METADATA_ELF_BUILD_ID], (
         'BuildID from apk_elf_result did not match')
 
@@ -791,44 +776,101 @@
       if packed_section_name not in section_sizes:
         logging.warning('Packed section not present: %s', packed_section_name)
       else:
-        section_sizes['%s (unpacked)' % packed_section_name] = (
-            unstripped_section_sizes.get(packed_section_name))
-  _AddPakSymbolsFromApk(section_sizes, raw_symbols, apk_path, output_directory)
+        apk_section_sizes['%s (unpacked)' % packed_section_name] = (
+            section_sizes.get(packed_section_name))
+  return apk_section_sizes
 
 
-def _AddPakSymbolsFromApk(
-    section_sizes, raw_symbols, apk_path, output_directory):
+def _FindPakSymbolsFromApk(apk_path, output_directory):
   with zipfile.ZipFile(apk_path) as z:
-    pak_zip_infos = [f for f in z.infolist() if f.filename.endswith('.pak')]
+    pak_zip_infos = (f for f in z.infolist() if f.filename.endswith('.pak'))
     apk_info_name = os.path.basename(apk_path) + '.pak.info'
     pak_info_path = os.path.join(output_directory, 'size-info', apk_info_name)
     res_info = _ParsePakInfoFile(pak_info_path)
-    symbols_by_name = {}
+    symbols_by_id = {}
     for pak_zip_info in pak_zip_infos:
       contents = data_pack.ReadDataPackFromString(z.read(pak_zip_info))
       _ComputePakFileSymbols(
           pak_zip_info.filename, pak_zip_info.file_size, contents, res_info,
-          symbols_by_name)
-  _AddPakSymbols(section_sizes, raw_symbols, symbols_by_name)
+          symbols_by_id)
+  return symbols_by_id
 
 
-def AddPakSymbolsFromFiles(
-    section_sizes, raw_symbols, pak_files, pak_info_path):
+def _FindPakSymbolsFromFiles(pak_files, pak_info_path):
   """Uses files from args to find and add pak symbols."""
   res_info = _ParsePakInfoFile(pak_info_path)
-  symbols_by_name = {}
+  symbols_by_id = {}
   for pak_file_path in pak_files:
     with open(pak_file_path, 'r') as f:
       contents = data_pack.ReadDataPackFromString(f.read())
       _ComputePakFileSymbols(
           pak_file_path, os.path.getsize(pak_file_path), contents, res_info,
-          symbols_by_name)
-  _AddPakSymbols(section_sizes, raw_symbols, symbols_by_name)
+          symbols_by_id)
+  return symbols_by_id
+
+
+def CreateSectionSizesAndSymbols(
+      map_path=None, tool_prefix=None, output_directory=None, elf_path=None,
+      apk_path=None, track_string_literals=True, metadata=None,
+      apk_elf_result=None, pak_files=None, pak_info_file=None):
+  """Creates sections sizes and symbols for a SizeInfo.
+
+  Args:
+    map_path: Path to the linker .map(.gz) file to parse.
+    elf_path: Path to the corresponding unstripped ELF file. Used to find symbol
+        aliases and inlined functions. Can be None.
+    tool_prefix: Prefix for c++filt & nm (required).
+    output_directory: Build output directory. If None, source_paths and symbol
+        alias information will not be recorded.
+    track_string_literals: Whether to break down "** merge string" sections into
+        smaller symbols (requires output_directory).
+  """
+  source_mapper = None
+  elf_object_paths = None
+  if output_directory:
+    # Start by finding the elf_object_paths, so that nm can run on them while
+    # the linker .map is being parsed.
+    logging.info('Parsing ninja files.')
+    source_mapper, elf_object_paths = ninja_parser.Parse(
+        output_directory, elf_path)
+    logging.debug('Parsed %d .ninja files.', source_mapper.parsed_file_count)
+    assert not elf_path or elf_object_paths, (
+        'Failed to find link command in ninja files for ' +
+        os.path.relpath(elf_path, output_directory))
+
+  section_sizes, raw_symbols = _ParseElfInfo(
+      map_path, elf_path, tool_prefix, output_directory, track_string_literals,
+      elf_object_paths)
+
+  pak_symbols_by_id = None
+  if apk_path:
+    section_sizes = _ParseApkSectionSizes(section_sizes, metadata,
+                                          apk_elf_result)
+    pak_symbols_by_id = _FindPakSymbolsFromApk(apk_path, output_directory)
+  elif pak_files and pak_info_file:
+    pak_symbols_by_id = _FindPakSymbolsFromFiles(pak_files, pak_info_file)
+
+  if pak_symbols_by_id:
+    object_paths = (p for p in source_mapper.IterAllPaths() if p.endswith('.o'))
+    pak_section_sizes, pak_raw_symbols = _ParsePakSymbols(
+        object_paths, output_directory, pak_symbols_by_id)
+    section_sizes.update(pak_section_sizes)
+    raw_symbols.extend(pak_raw_symbols)
+
+  _ExtractSourcePathsAndNormalizeObjectPaths(raw_symbols, source_mapper)
+  logging.info('Converting excessive aliases into shared-path symbols')
+  _CompactLargeAliasesIntoSharedSymbols(raw_symbols)
+  return section_sizes, raw_symbols
 
 
 def CreateSizeInfo(
     section_sizes, raw_symbols, metadata=None, normalize_names=True):
   """Performs operations on all symbols and creates a SizeInfo object."""
+  logging.debug('Sorting %d symbols', len(raw_symbols))
+  raw_symbols.sort(key=lambda s: (
+      s.IsPak(), s.IsBss(), s.section_name, s.address))
+  logging.info('Processed %d symbols', len(raw_symbols))
+
   # Padding not really required, but it is useful to check for large padding and
   # log a warning.
   logging.info('Calculating padding')
@@ -840,9 +882,6 @@
   if normalize_names:
     _NormalizeNames(raw_symbols)
 
-  raw_symbols.sort(key=lambda s: (
-      s.IsPak(), s.IsBss(), s.section_name, s.address))
-  logging.info('Processed %d symbols', len(raw_symbols))
   return models.SizeInfo(section_sizes, raw_symbols, metadata=metadata)
 
 
@@ -957,8 +996,6 @@
   elf_path = args.elf_file
   map_path = args.map_file
   apk_path = args.apk_file
-  pak_files = args.pak_file
-  pak_info_file = args.pak_info_file
   any_input = apk_path or elf_path or map_path
   if not any_input:
     parser.error('Most pass at least one of --apk-file, --elf-file, --map-file')
@@ -1004,20 +1041,19 @@
 
   metadata = CreateMetadata(map_path, elf_path, apk_path, tool_prefix,
                             output_directory)
+
+  apk_elf_result = None
   if apk_path and elf_path:
     # Extraction takes around 1 second, so do it in parallel.
     apk_elf_result = concurrent.ForkAndCall(
         _ElfInfoFromApk, (apk_path, apk_so_path, tool_prefix))
 
   section_sizes, raw_symbols = CreateSectionSizesAndSymbols(
-      map_path, elf_path, tool_prefix, output_directory,
-      track_string_literals=args.track_string_literals)
-  if apk_path:
-    AddApkInfo(section_sizes, raw_symbols, apk_path, output_directory,
-               metadata, apk_elf_result)
-  elif pak_files and pak_info_file:
-    AddPakSymbolsFromFiles(
-        section_sizes, raw_symbols, pak_files, pak_info_file)
+      map_path=map_path, tool_prefix=tool_prefix, elf_path=elf_path,
+      apk_path=apk_path, output_directory=output_directory,
+      track_string_literals=args.track_string_literals,
+      metadata=metadata, apk_elf_result=apk_elf_result,
+      pak_files=args.pak_file, pak_info_file=args.pak_info_file)
   size_info = CreateSizeInfo(
       section_sizes, raw_symbols, metadata=metadata, normalize_names=False)
 
diff --git a/tools/binary_size/libsupersize/integration_test.py b/tools/binary_size/libsupersize/integration_test.py
index 00b5323..edac84a 100755
--- a/tools/binary_size/libsupersize/integration_test.py
+++ b/tools/binary_size/libsupersize/integration_test.py
@@ -107,11 +107,15 @@
     if cache_key not in IntegrationTest.cached_size_info:
       elf_path = _TEST_ELF_PATH if use_elf else None
       output_directory = _TEST_OUTPUT_DIR if use_output_directory else None
-      section_sizes, raw_symbols = archive.CreateSectionSizesAndSymbols(
-          _TEST_MAP_PATH, elf_path, _TEST_TOOL_PREFIX, output_directory)
       if use_pak:
-        archive.AddPakSymbolsFromFiles(
-            section_sizes, raw_symbols, [_TEST_PAK_PATH], _TEST_PAK_INFO_PATH)
+        section_sizes, raw_symbols = archive.CreateSectionSizesAndSymbols(
+            map_path=_TEST_MAP_PATH, tool_prefix=_TEST_TOOL_PREFIX,
+            elf_path=elf_path, output_directory=output_directory,
+            pak_files=[_TEST_PAK_PATH], pak_info_file=_TEST_PAK_INFO_PATH)
+      else:
+        section_sizes, raw_symbols = archive.CreateSectionSizesAndSymbols(
+            map_path=_TEST_MAP_PATH, tool_prefix=_TEST_TOOL_PREFIX,
+            elf_path=elf_path, output_directory=output_directory)
       metadata = None
       if use_elf:
         with _AddMocksToPath():
diff --git a/tools/binary_size/libsupersize/ninja_parser.py b/tools/binary_size/libsupersize/ninja_parser.py
index b8a2784..6b776539 100644
--- a/tools/binary_size/libsupersize/ninja_parser.py
+++ b/tools/binary_size/libsupersize/ninja_parser.py
@@ -55,6 +55,9 @@
   def unmatched_paths_count(self):
     return len(self._unmatched_paths)
 
+  def IterAllPaths(self):
+    return self._dep_map.iterkeys()
+
 
 def _ParseNinjaPathList(path_list):
   ret = path_list.replace('\\ ', '\b')
diff --git a/tools/binary_size/libsupersize/testdata/Archive_Pak.golden b/tools/binary_size/libsupersize/testdata/Archive_Pak.golden
index ca67b21..64a0fbf 100644
--- a/tools/binary_size/libsupersize/testdata/Archive_Pak.golden
+++ b/tools/binary_size/libsupersize/testdata/Archive_Pak.golden
@@ -87,208 +87,208 @@
 .bss@2dffda0(size_without_padding=28,padding=0,full_name=g_chrome_content_browser_client,object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={gen},num_aliases=1)
 .bss@2dffe80(size_without_padding=4,padding=196,full_name=SaveHistogram(_JNIEnv*, base::android::JavaParamRef<_jobject*> const&, base::android::JavaParamRef<_jstring*> const&, base::android::JavaParamRef<_jlongArray*> const&, int)::atomic_histogram_pointer,object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={gen},num_aliases=1)
 .bss@2dffe84(size_without_padding=4,padding=0,full_name=g_AnimationFrameTimeHistogram_clazz,object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={anon,gen},num_aliases=1)
-.pak.translations@3ac6(size_without_padding=40,padding=0,full_name=../../components/app_modal_strings.grdp: IDS_BEFOREUNLOAD_MESSAGEBOX_MESSAGE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/app_modal_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3d7c(size_without_padding=24,padding=0,full_name=../../components/policy_strings.grdp: IDS_POLICY_TYPE_ERROR,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/policy_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3d82(size_without_padding=25,padding=0,full_name=../../components/policy_strings.grdp: IDS_POLICY_LIST_ENTRY_ERROR,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/policy_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3d83(size_without_padding=41,padding=0,full_name=../../components/policy_strings.grdp: IDS_POLICY_SCHEMA_VALIDATION_ERROR,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/policy_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3dd2(size_without_padding=51,padding=0,full_name=../../components/safe_browsing_strings.grdp: IDS_SB_UNDER_CONSTRUCTION,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/safe_browsing_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3df8(size_without_padding=20,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_SAFEBROWSING_V3_TITLE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3df9(size_without_padding=17,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_SAFEBROWSING_V3_OPEN_DETAILS_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3dfa(size_without_padding=18,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_SAFEBROWSING_V3_CLOSE_DETAILS_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3dfb(size_without_padding=20,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_SAFEBROWSING_OVERRIDABLE_SAFETY_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3dfc(size_without_padding=44,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_MALWARE_V3_HEADING,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3dfd(size_without_padding=226,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_MALWARE_V3_PRIMARY_PARAGRAPH,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3dfe(size_without_padding=165,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_MALWARE_V3_EXPLANATION_PARAGRAPH,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3dff(size_without_padding=231,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_SUBRESOURCE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3e00(size_without_padding=165,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_MALWARE_V3_PROCEED_PARAGRAPH,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3e01(size_without_padding=20,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_SAFE_BROWSING_PRIVACY_POLICY_PAGE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3e02(size_without_padding=116,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_SAFE_BROWSING_MALWARE_REPORTING_AGREE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3e03(size_without_padding=156,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_SAFE_BROWSING_SCOUT_REPORTING_AGREE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3e08(size_without_padding=26,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_PHISHING_V4_HEADING,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3e09(size_without_padding=253,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_PHISHING_V4_PRIMARY_PARAGRAPH,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3e0a(size_without_padding=155,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_PHISHING_V4_EXPLANATION_PARAGRAPH,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3e0b(size_without_padding=187,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_PHISHING_V4_PROCEED_AND_REPORT_PARAGRAPH,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3e0c(size_without_padding=32,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_MALWARE_WEBVIEW_HEADING,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3e0d(size_without_padding=160,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_MALWARE_WEBVIEW_EXPLANATION_PARAGRAPH,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3e0e(size_without_padding=32,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_PHISHING_WEBVIEW_HEADING,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@3e0f(size_without_padding=147,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_PHISHING_WEBVIEW_EXPLANATION_PARAGRAPH,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../components/security_interstitials_strings.grdp,flags={},num_aliases=1)
-.pak.translations@4e85(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_CALENDAR_CLEAR,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e86(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_CALENDAR_TODAY,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e87(size_without_padding=16,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_SUBMIT_LABEL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e89(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_RESET_LABEL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e8a(size_without_padding=17,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_FILE_BUTTON_LABEL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e8b(size_without_padding=18,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_MULTIPLE_FILES_BUTTON_LABEL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e8c(size_without_padding=20,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_FILE_NO_FILE_LABEL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e8d(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_FILE_MULTIPLE_UPLOAD,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e8e(size_without_padding=26,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_OTHER_COLOR_LABEL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e92(size_without_padding=8,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_PLACEHOLDER_FOR_DAY_OF_MONTH_FIELD,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e93(size_without_padding=8,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_PLACEHOLDER_FOR_MONTH_FIELD,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e94(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_PLACEHOLDER_FOR_YEAR_FIELD,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e95(size_without_padding=17,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_SELECT_MENU_LIST_TEXT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e96(size_without_padding=16,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_THIS_MONTH_LABEL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e97(size_without_padding=15,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_THIS_WEEK_LABEL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e98(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_WEEK_NUMBER_LABEL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e99(size_without_padding=32,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_CALENDAR_SHOW_MONTH_SELECTOR,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e9a(size_without_padding=21,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_CALENDAR_SHOW_NEXT_MONTH,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e9b(size_without_padding=25,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_CALENDAR_SHOW_PREVIOUS_MONTH,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e9c(size_without_padding=24,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_CALENDAR_WEEK_DESCRIPTION,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e9d(size_without_padding=13,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_ARTICLE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e9e(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_BANNER,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4e9f(size_without_padding=19,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_COMPLEMENTARY,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ea0(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_CHECK_BOX,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ea1(size_without_padding=18,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_CONTENT_INFO,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ea2(size_without_padding=16,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_DEFINITION,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ea4(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_DESCRIPTION_TERM,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ea5(size_without_padding=25,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_DISCLOSURE_TRIANGLE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ea6(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_FEED,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ea9(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_FOOTER,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eac(size_without_padding=19,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TOGGLE_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ead(size_without_padding=13,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_HEADING,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eae(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_LINK,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eaf(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_MAIN_CONTENT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eb0(size_without_padding=25,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_MARK,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eb1(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_MATH,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eb2(size_without_padding=16,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_NAVIGATIONAL_LINK,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eb3(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_REGION,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eb4(size_without_padding=23,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_SEARCH_BOX,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eb5(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_STATUS,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eb6(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_SWITCH,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eb8(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_ALERT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eb9(size_without_padding=18,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_ALERT_DIALOG,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eba(size_without_padding=17,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_APPLICATION,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ebb(size_without_padding=16,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_BLOCKQUOTE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ebc(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ebd(size_without_padding=22,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_BUTTON_DROP_DOWN,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ebe(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_CELL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ebf(size_without_padding=18,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_COLOR_WELL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ec0(size_without_padding=19,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_COLUMN_HEADER,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ec2(size_without_padding=17,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_DATE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ec3(size_without_padding=26,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_DATE_TIME,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ec4(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_DIALOG,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ec5(size_without_padding=15,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_DIRECTORY,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ec6(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_DOCUMENT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ec7(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_EMBEDDED_OBJECT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ec8(size_without_padding=13,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_GRAPHIC,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ec9(size_without_padding=16,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_HEADING_WITH_LEVEL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eca(size_without_padding=17,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_INPUT_TIME,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ecb(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_LIST_BOX,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ecc(size_without_padding=9,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_LOG,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ecd(size_without_padding=13,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_MARQUEE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ece(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_MENU,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ecf(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_MENU_BAR,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ed0(size_without_padding=17,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_MENU_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ed1(size_without_padding=15,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_MENU_ITEM,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ed2(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_METER,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ed3(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_NOTE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ed4(size_without_padding=19,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_POP_UP_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ed5(size_without_padding=24,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_PROGRESS_INDICATOR,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ed6(size_without_padding=18,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_RADIO,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ed7(size_without_padding=17,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_RADIO_GROUP,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ed8(size_without_padding=16,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_ROW_HEADER,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ed9(size_without_padding=16,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_SCROLL_BAR,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eda(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_SEARCH,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4edb(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_SLIDER,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4edc(size_without_padding=17,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_SPIN_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4edd(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_SPLITTER,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ede(size_without_padding=9,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TAB,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4edf(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TABLE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ee0(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TAB_LIST,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ee1(size_without_padding=15,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TAB_PANEL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ee2(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TIME,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ee3(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TIMER,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ee4(size_without_padding=13,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TOOLBAR,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ee5(size_without_padding=13,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TOOLTIP,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ee6(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TREE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ee7(size_without_padding=15,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TREE_GRID,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ee8(size_without_padding=15,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TREE_ITEM,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ee9(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_AM_PM_FIELD_TEXT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eea(size_without_padding=9,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_DAY_OF_MONTH_FIELD_TEXT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eeb(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_HOUR_FIELD_TEXT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eec(size_without_padding=19,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_DEFAULT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eed(size_without_padding=15,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_AUDIO_ELEMENT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eee(size_without_padding=15,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_VIDEO_ELEMENT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eef(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_MUTE_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ef0(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_UNMUTE_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ef1(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_PLAY_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ef2(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_PAUSE_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ef3(size_without_padding=18,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_CURRENT_TIME_DISPLAY,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ef4(size_without_padding=20,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_TIME_REMAINING_DISPLAY,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ef5(size_without_padding=23,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_ENTER_FULL_SCREEN_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ef6(size_without_padding=26,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_EXIT_FULL_SCREEN_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ef7(size_without_padding=26,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_SHOW_CLOSED_CAPTIONS_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ef8(size_without_padding=26,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_HIDE_CLOSED_CAPTIONS_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4ef9(size_without_padding=31,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_CAST_OFF_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4efa(size_without_padding=33,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_CAST_ON_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4efb(size_without_padding=20,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_DOWNLOAD_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4efc(size_without_padding=30,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_OVERFLOW_BUTTON,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4eff(size_without_padding=22,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_MUTE_BUTTON_HELP,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f00(size_without_padding=24,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_UNMUTE_BUTTON_HELP,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f01(size_without_padding=20,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_PLAY_BUTTON_HELP,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f02(size_without_padding=20,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_PAUSE_BUTTON_HELP,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f03(size_without_padding=25,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_AUDIO_SLIDER_HELP,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f04(size_without_padding=25,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_VIDEO_SLIDER_HELP,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f05(size_without_padding=29,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_CURRENT_TIME_DISPLAY_HELP,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f06(size_without_padding=42,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_TIME_REMAINING_DISPLAY_HELP,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f07(size_without_padding=36,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_ENTER_FULL_SCREEN_BUTTON_HELP,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f09(size_without_padding=38,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_SHOW_CLOSED_CAPTIONS_BUTTON_HELP,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f0a(size_without_padding=37,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_HIDE_CLOSED_CAPTIONS_BUTTON_HELP,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f0d(size_without_padding=18,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_OVERFLOW_BUTTON_HELP,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f0e(size_without_padding=18,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MILLISECOND_FIELD_TEXT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f0f(size_without_padding=13,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MINUTE_FIELD_TEXT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f10(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MONTH_FIELD_TEXT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f11(size_without_padding=13,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_SECOND_FIELD_TEXT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f13(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_YEAR_FIELD_TEXT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f14(size_without_padding=17,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_INPUT_WEEK_TEMPLATE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f15(size_without_padding=38,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_VALUE_MISSING_MULTIPLE_FILE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f16(size_without_padding=20,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f17(size_without_padding=45,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_EMAIL_EMPTY,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f18(size_without_padding=61,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_EMAIL_EMPTY_DOMAIN,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f19(size_without_padding=63,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_EMAIL_EMPTY_LOCAL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f1a(size_without_padding=63,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_EMAIL_INVALID_DOMAIN,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f1b(size_without_padding=47,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_EMAIL_INVALID_DOTS,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f1c(size_without_padding=65,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_EMAIL_INVALID_LOCAL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f1d(size_without_padding=75,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_EMAIL_NO_AT_SIGN,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f1e(size_without_padding=61,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_MULTIPLE_EMAIL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f1f(size_without_padding=48,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_RANGE_UNDERFLOW,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f20(size_without_padding=32,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_RANGE_UNDERFLOW_DATETIME,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f21(size_without_padding=45,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_RANGE_OVERFLOW,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f22(size_without_padding=34,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_RANGE_OVERFLOW_DATETIME,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f23(size_without_padding=81,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_BAD_INPUT_DATETIME,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f24(size_without_padding=28,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_BAD_INPUT_NUMBER,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f25(size_without_padding=33,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_VALUE_MISSING,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f26(size_without_padding=51,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_VALUE_MISSING_CHECKBOX,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f27(size_without_padding=27,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_VALUE_MISSING_FILE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f28(size_without_padding=41,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_VALUE_MISSING_RADIO,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f29(size_without_padding=40,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_VALUE_MISSING_SELECT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f2a(size_without_padding=36,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_EMAIL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f2b(size_without_padding=25,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_URL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f2c(size_without_padding=40,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_PATTERN_MISMATCH,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f2d(size_without_padding=77,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_STEP_MISMATCH,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f2e(size_without_padding=64,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_STEP_MISMATCH_CLOSE_TO_LIMIT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f2f(size_without_padding=96,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TOO_LONG,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f30(size_without_padding=95,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TOO_SHORT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f31(size_without_padding=97,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TOO_SHORT_PLURAL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f32(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_CLOSED_CAPTIONS,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f33(size_without_padding=13,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_CLOSED_CAPTIONS_SUBMENU_TITLE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f34(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_CAST,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f35(size_without_padding=16,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_ENTER_FULLSCREEN,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f36(size_without_padding=21,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_EXIT_FULLSCREEN,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f37(size_without_padding=18,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_STOP_CAST,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f38(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_MUTE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f39(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_UNMUTE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f3a(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_PLAY,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f3b(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_PAUSE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f3c(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_DOWNLOAD,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f3d(size_without_padding=26,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_REMOTING_DISABLE_TEXT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f3e(size_without_padding=23,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_REMOTING_CAST_TEXT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f3f(size_without_padding=28,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_REMOTING_CAST_TO_UNKNOWN_DEVICE_TEXT,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f40(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_TRACKS_NO_LABEL,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f41(size_without_padding=9,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_TRACKS_OFF,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@4f42(size_without_padding=27,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_PLUGIN_INITIALIZATION_ERROR,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../content/app/strings/content_strings.grd,flags={},num_aliases=1)
-.pak.translations@5bd6(size_without_padding=27,padding=0,full_name=../../android_webview/ui/aw_strings.grd: IDS_AW_WEBPAGE_NOT_AVAILABLE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../android_webview/ui/aw_strings.grd,flags={},num_aliases=1)
-.pak.translations@5bd7(size_without_padding=69,padding=0,full_name=../../android_webview/ui/aw_strings.grd: IDS_AW_WEBPAGE_CAN_NOT_BE_LOADED,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../android_webview/ui/aw_strings.grd,flags={},num_aliases=1)
-.pak.translations@5bd8(size_without_padding=121,padding=0,full_name=../../android_webview/ui/aw_strings.grd: IDS_AW_WEBPAGE_TEMPORARILY_DOWN,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../android_webview/ui/aw_strings.grd,flags={},num_aliases=1)
-.pak.translations@5bd9(size_without_padding=161,padding=0,full_name=../../android_webview/ui/aw_strings.grd: IDS_AW_WEBPAGE_TEMPORARILY_DOWN_SUGGESTIONS,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../android_webview/ui/aw_strings.grd,flags={},num_aliases=1)
-.pak.translations@5bda(size_without_padding=80,padding=0,full_name=../../android_webview/ui/aw_strings.grd: IDS_AW_WEBPAGE_PARENTAL_PERMISSION_NEEDED,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../android_webview/ui/aw_strings.grd,flags={},num_aliases=1)
-.pak.translations@6917(size_without_padding=23,padding=0,full_name=../../ui/strings/app_locale_settings.grd: IDS_WEB_FONT_FAMILY,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../ui/strings/app_locale_settings.grd,flags={},num_aliases=1)
-.pak.translations@6918(size_without_padding=9,padding=0,full_name=../../ui/strings/app_locale_settings.grd: IDS_WEB_FONT_SIZE,object_path=tools/binary_size/libsupersize/testdata/mock_output_directory/en-US.pak,source_path=../../ui/strings/app_locale_settings.grd,flags={},num_aliases=1)
+.pak.translations@3ac6(size_without_padding=40,padding=0,full_name=../../components/app_modal_strings.grdp: IDS_BEFOREUNLOAD_MESSAGEBOX_MESSAGE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3d7c(size_without_padding=24,padding=0,full_name=../../components/policy_strings.grdp: IDS_POLICY_TYPE_ERROR,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3d82(size_without_padding=25,padding=0,full_name=../../components/policy_strings.grdp: IDS_POLICY_LIST_ENTRY_ERROR,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3d83(size_without_padding=41,padding=0,full_name=../../components/policy_strings.grdp: IDS_POLICY_SCHEMA_VALIDATION_ERROR,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3dd2(size_without_padding=51,padding=0,full_name=../../components/safe_browsing_strings.grdp: IDS_SB_UNDER_CONSTRUCTION,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3df8(size_without_padding=20,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_SAFEBROWSING_V3_TITLE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3df9(size_without_padding=17,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_SAFEBROWSING_V3_OPEN_DETAILS_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3dfa(size_without_padding=18,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_SAFEBROWSING_V3_CLOSE_DETAILS_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3dfb(size_without_padding=20,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_SAFEBROWSING_OVERRIDABLE_SAFETY_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3dfc(size_without_padding=44,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_MALWARE_V3_HEADING,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3dfd(size_without_padding=226,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_MALWARE_V3_PRIMARY_PARAGRAPH,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3dfe(size_without_padding=165,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_MALWARE_V3_EXPLANATION_PARAGRAPH,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3dff(size_without_padding=231,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_SUBRESOURCE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3e00(size_without_padding=165,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_MALWARE_V3_PROCEED_PARAGRAPH,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3e01(size_without_padding=20,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_SAFE_BROWSING_PRIVACY_POLICY_PAGE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3e02(size_without_padding=116,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_SAFE_BROWSING_MALWARE_REPORTING_AGREE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3e03(size_without_padding=156,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_SAFE_BROWSING_SCOUT_REPORTING_AGREE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3e08(size_without_padding=26,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_PHISHING_V4_HEADING,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3e09(size_without_padding=253,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_PHISHING_V4_PRIMARY_PARAGRAPH,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3e0a(size_without_padding=155,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_PHISHING_V4_EXPLANATION_PARAGRAPH,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3e0b(size_without_padding=187,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_PHISHING_V4_PROCEED_AND_REPORT_PARAGRAPH,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3e0c(size_without_padding=32,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_MALWARE_WEBVIEW_HEADING,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3e0d(size_without_padding=160,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_MALWARE_WEBVIEW_EXPLANATION_PARAGRAPH,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3e0e(size_without_padding=32,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_PHISHING_WEBVIEW_HEADING,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@3e0f(size_without_padding=147,padding=0,full_name=../../components/security_interstitials_strings.grdp: IDS_PHISHING_WEBVIEW_EXPLANATION_PARAGRAPH,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e85(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_CALENDAR_CLEAR,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e86(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_CALENDAR_TODAY,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e87(size_without_padding=16,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_SUBMIT_LABEL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e89(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_RESET_LABEL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e8a(size_without_padding=17,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_FILE_BUTTON_LABEL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e8b(size_without_padding=18,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_MULTIPLE_FILES_BUTTON_LABEL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e8c(size_without_padding=20,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_FILE_NO_FILE_LABEL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e8d(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_FILE_MULTIPLE_UPLOAD,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e8e(size_without_padding=26,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_OTHER_COLOR_LABEL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e92(size_without_padding=8,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_PLACEHOLDER_FOR_DAY_OF_MONTH_FIELD,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e93(size_without_padding=8,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_PLACEHOLDER_FOR_MONTH_FIELD,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e94(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_PLACEHOLDER_FOR_YEAR_FIELD,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e95(size_without_padding=17,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_SELECT_MENU_LIST_TEXT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e96(size_without_padding=16,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_THIS_MONTH_LABEL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e97(size_without_padding=15,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_THIS_WEEK_LABEL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e98(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_WEEK_NUMBER_LABEL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e99(size_without_padding=32,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_CALENDAR_SHOW_MONTH_SELECTOR,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e9a(size_without_padding=21,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_CALENDAR_SHOW_NEXT_MONTH,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e9b(size_without_padding=25,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_CALENDAR_SHOW_PREVIOUS_MONTH,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e9c(size_without_padding=24,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_CALENDAR_WEEK_DESCRIPTION,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e9d(size_without_padding=13,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_ARTICLE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e9e(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_BANNER,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4e9f(size_without_padding=19,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_COMPLEMENTARY,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ea0(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_CHECK_BOX,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ea1(size_without_padding=18,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_CONTENT_INFO,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ea2(size_without_padding=16,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_DEFINITION,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ea4(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_DESCRIPTION_TERM,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ea5(size_without_padding=25,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_DISCLOSURE_TRIANGLE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ea6(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_FEED,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ea9(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_FOOTER,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eac(size_without_padding=19,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TOGGLE_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ead(size_without_padding=13,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_HEADING,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eae(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_LINK,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eaf(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_MAIN_CONTENT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eb0(size_without_padding=25,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_MARK,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eb1(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_MATH,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eb2(size_without_padding=16,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_NAVIGATIONAL_LINK,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eb3(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_REGION,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eb4(size_without_padding=23,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_SEARCH_BOX,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eb5(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_STATUS,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eb6(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_SWITCH,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eb8(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_ALERT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eb9(size_without_padding=18,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_ALERT_DIALOG,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eba(size_without_padding=17,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_APPLICATION,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ebb(size_without_padding=16,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_BLOCKQUOTE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ebc(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ebd(size_without_padding=22,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_BUTTON_DROP_DOWN,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ebe(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_CELL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ebf(size_without_padding=18,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_COLOR_WELL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ec0(size_without_padding=19,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_COLUMN_HEADER,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ec2(size_without_padding=17,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_DATE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ec3(size_without_padding=26,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_DATE_TIME,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ec4(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_DIALOG,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ec5(size_without_padding=15,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_DIRECTORY,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ec6(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_DOCUMENT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ec7(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_EMBEDDED_OBJECT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ec8(size_without_padding=13,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_GRAPHIC,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ec9(size_without_padding=16,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_HEADING_WITH_LEVEL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eca(size_without_padding=17,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_INPUT_TIME,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ecb(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_LIST_BOX,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ecc(size_without_padding=9,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_LOG,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ecd(size_without_padding=13,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_MARQUEE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ece(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_MENU,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ecf(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_MENU_BAR,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ed0(size_without_padding=17,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_MENU_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ed1(size_without_padding=15,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_MENU_ITEM,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ed2(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_METER,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ed3(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_NOTE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ed4(size_without_padding=19,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_POP_UP_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ed5(size_without_padding=24,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_PROGRESS_INDICATOR,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ed6(size_without_padding=18,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_RADIO,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ed7(size_without_padding=17,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_RADIO_GROUP,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ed8(size_without_padding=16,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_ROW_HEADER,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ed9(size_without_padding=16,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_SCROLL_BAR,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eda(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_SEARCH,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4edb(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_SLIDER,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4edc(size_without_padding=17,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_SPIN_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4edd(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_SPLITTER,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ede(size_without_padding=9,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TAB,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4edf(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TABLE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ee0(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TAB_LIST,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ee1(size_without_padding=15,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TAB_PANEL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ee2(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TIME,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ee3(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TIMER,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ee4(size_without_padding=13,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TOOLBAR,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ee5(size_without_padding=13,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TOOLTIP,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ee6(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TREE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ee7(size_without_padding=15,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TREE_GRID,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ee8(size_without_padding=15,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_ROLE_TREE_ITEM,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ee9(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_AM_PM_FIELD_TEXT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eea(size_without_padding=9,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_DAY_OF_MONTH_FIELD_TEXT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eeb(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_HOUR_FIELD_TEXT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eec(size_without_padding=19,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_DEFAULT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eed(size_without_padding=15,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_AUDIO_ELEMENT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eee(size_without_padding=15,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_VIDEO_ELEMENT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eef(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_MUTE_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ef0(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_UNMUTE_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ef1(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_PLAY_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ef2(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_PAUSE_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ef3(size_without_padding=18,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_CURRENT_TIME_DISPLAY,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ef4(size_without_padding=20,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_TIME_REMAINING_DISPLAY,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ef5(size_without_padding=23,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_ENTER_FULL_SCREEN_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ef6(size_without_padding=26,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_EXIT_FULL_SCREEN_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ef7(size_without_padding=26,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_SHOW_CLOSED_CAPTIONS_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ef8(size_without_padding=26,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_HIDE_CLOSED_CAPTIONS_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4ef9(size_without_padding=31,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_CAST_OFF_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4efa(size_without_padding=33,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_CAST_ON_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4efb(size_without_padding=20,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_DOWNLOAD_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4efc(size_without_padding=30,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_OVERFLOW_BUTTON,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4eff(size_without_padding=22,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_MUTE_BUTTON_HELP,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f00(size_without_padding=24,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_UNMUTE_BUTTON_HELP,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f01(size_without_padding=20,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_PLAY_BUTTON_HELP,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f02(size_without_padding=20,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_PAUSE_BUTTON_HELP,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f03(size_without_padding=25,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_AUDIO_SLIDER_HELP,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f04(size_without_padding=25,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_VIDEO_SLIDER_HELP,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f05(size_without_padding=29,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_CURRENT_TIME_DISPLAY_HELP,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f06(size_without_padding=42,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_TIME_REMAINING_DISPLAY_HELP,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f07(size_without_padding=36,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_ENTER_FULL_SCREEN_BUTTON_HELP,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f09(size_without_padding=38,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_SHOW_CLOSED_CAPTIONS_BUTTON_HELP,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f0a(size_without_padding=37,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_HIDE_CLOSED_CAPTIONS_BUTTON_HELP,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f0d(size_without_padding=18,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MEDIA_OVERFLOW_BUTTON_HELP,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f0e(size_without_padding=18,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MILLISECOND_FIELD_TEXT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f0f(size_without_padding=13,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MINUTE_FIELD_TEXT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f10(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_MONTH_FIELD_TEXT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f11(size_without_padding=13,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_SECOND_FIELD_TEXT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f13(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_AX_YEAR_FIELD_TEXT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f14(size_without_padding=17,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_INPUT_WEEK_TEMPLATE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f15(size_without_padding=38,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_VALUE_MISSING_MULTIPLE_FILE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f16(size_without_padding=20,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f17(size_without_padding=45,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_EMAIL_EMPTY,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f18(size_without_padding=61,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_EMAIL_EMPTY_DOMAIN,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f19(size_without_padding=63,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_EMAIL_EMPTY_LOCAL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f1a(size_without_padding=63,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_EMAIL_INVALID_DOMAIN,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f1b(size_without_padding=47,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_EMAIL_INVALID_DOTS,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f1c(size_without_padding=65,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_EMAIL_INVALID_LOCAL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f1d(size_without_padding=75,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_EMAIL_NO_AT_SIGN,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f1e(size_without_padding=61,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_MULTIPLE_EMAIL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f1f(size_without_padding=48,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_RANGE_UNDERFLOW,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f20(size_without_padding=32,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_RANGE_UNDERFLOW_DATETIME,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f21(size_without_padding=45,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_RANGE_OVERFLOW,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f22(size_without_padding=34,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_RANGE_OVERFLOW_DATETIME,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f23(size_without_padding=81,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_BAD_INPUT_DATETIME,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f24(size_without_padding=28,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_BAD_INPUT_NUMBER,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f25(size_without_padding=33,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_VALUE_MISSING,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f26(size_without_padding=51,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_VALUE_MISSING_CHECKBOX,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f27(size_without_padding=27,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_VALUE_MISSING_FILE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f28(size_without_padding=41,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_VALUE_MISSING_RADIO,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f29(size_without_padding=40,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_VALUE_MISSING_SELECT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f2a(size_without_padding=36,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_EMAIL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f2b(size_without_padding=25,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TYPE_MISMATCH_URL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f2c(size_without_padding=40,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_PATTERN_MISMATCH,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f2d(size_without_padding=77,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_STEP_MISMATCH,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f2e(size_without_padding=64,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_STEP_MISMATCH_CLOSE_TO_LIMIT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f2f(size_without_padding=96,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TOO_LONG,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f30(size_without_padding=95,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TOO_SHORT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f31(size_without_padding=97,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_FORM_VALIDATION_TOO_SHORT_PLURAL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f32(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_CLOSED_CAPTIONS,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f33(size_without_padding=13,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_CLOSED_CAPTIONS_SUBMENU_TITLE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f34(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_CAST,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f35(size_without_padding=16,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_ENTER_FULLSCREEN,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f36(size_without_padding=21,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_EXIT_FULLSCREEN,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f37(size_without_padding=18,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_STOP_CAST,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f38(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_MUTE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f39(size_without_padding=12,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_UNMUTE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f3a(size_without_padding=10,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_PLAY,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f3b(size_without_padding=11,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_PAUSE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f3c(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_OVERFLOW_MENU_DOWNLOAD,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f3d(size_without_padding=26,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_REMOTING_DISABLE_TEXT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f3e(size_without_padding=23,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_REMOTING_CAST_TEXT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f3f(size_without_padding=28,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_REMOTING_CAST_TO_UNKNOWN_DEVICE_TEXT,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f40(size_without_padding=14,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_TRACKS_NO_LABEL,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f41(size_without_padding=9,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_MEDIA_TRACKS_OFF,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@4f42(size_without_padding=27,padding=0,full_name=../../content/app/strings/content_strings.grd: IDS_PLUGIN_INITIALIZATION_ERROR,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@5bd6(size_without_padding=27,padding=0,full_name=../../android_webview/ui/aw_strings.grd: IDS_AW_WEBPAGE_NOT_AVAILABLE,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@5bd7(size_without_padding=69,padding=0,full_name=../../android_webview/ui/aw_strings.grd: IDS_AW_WEBPAGE_CAN_NOT_BE_LOADED,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@5bd8(size_without_padding=121,padding=0,full_name=../../android_webview/ui/aw_strings.grd: IDS_AW_WEBPAGE_TEMPORARILY_DOWN,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@5bd9(size_without_padding=161,padding=0,full_name=../../android_webview/ui/aw_strings.grd: IDS_AW_WEBPAGE_TEMPORARILY_DOWN_SUGGESTIONS,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@5bda(size_without_padding=80,padding=0,full_name=../../android_webview/ui/aw_strings.grd: IDS_AW_WEBPAGE_PARENTAL_PERMISSION_NEEDED,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@6917(size_without_padding=23,padding=0,full_name=../../ui/strings/app_locale_settings.grd: IDS_WEB_FONT_FAMILY,object_path=,source_path=,flags={},num_aliases=1)
+.pak.translations@6918(size_without_padding=9,padding=0,full_name=../../ui/strings/app_locale_settings.grd: IDS_WEB_FONT_SIZE,object_path=,source_path=,flags={},num_aliases=1)
diff --git a/tools/perf/chromium.perf.fyi.extras.json b/tools/perf/chromium.perf.fyi.extras.json
index 17e8dc7..a81aa679 100644
--- a/tools/perf/chromium.perf.fyi.extras.json
+++ b/tools/perf/chromium.perf.fyi.extras.json
@@ -129,7 +129,7 @@
       },
       {
         "args": [
-          "smoothness.key_silk_cases",
+          "system_health.common_desktop",
           "-v",
           "--upload-results",
           "--output-format=histograms",
@@ -139,7 +139,7 @@
           "--also-run-disabled-tests"
         ],
         "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.key_silk_cases",
+        "name": "system_health.common_desktop",
         "override_compile_targets": [
           "telemetry_perf_tests"
         ],
@@ -153,7 +153,7 @@
       },
       {
         "args": [
-          "smoothness.key_silk_cases",
+          "system_health.common_desktop",
           "-v",
           "--upload-results",
           "--output-format=histograms",
@@ -163,7 +163,55 @@
           "--also-run-disabled-tests"
         ],
         "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.key_silk_cases.reference",
+        "name": "system_health.common_desktop.reference",
+        "override_compile_targets": [
+          "telemetry_perf_tests"
+        ],
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "expiration": 36000,
+          "hard_timeout": 10800,
+          "ignore_task_failure": false,
+          "io_timeout": 3600
+        }
+      },
+      {
+        "args": [
+          "system_health.memory_desktop",
+          "-v",
+          "--upload-results",
+          "--output-format=histograms",
+          "--output-format=json-test-results",
+          "--browser=release",
+          "--xvfb",
+          "--also-run-disabled-tests"
+        ],
+        "isolate_name": "telemetry_perf_tests",
+        "name": "system_health.memory_desktop",
+        "override_compile_targets": [
+          "telemetry_perf_tests"
+        ],
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "expiration": 36000,
+          "hard_timeout": 10800,
+          "ignore_task_failure": false,
+          "io_timeout": 3600
+        }
+      },
+      {
+        "args": [
+          "system_health.memory_desktop",
+          "-v",
+          "--upload-results",
+          "--output-format=histograms",
+          "--output-format=json-test-results",
+          "--browser=reference",
+          "--xvfb",
+          "--also-run-disabled-tests"
+        ],
+        "isolate_name": "telemetry_perf_tests",
+        "name": "system_health.memory_desktop.reference",
         "override_compile_targets": [
           "telemetry_perf_tests"
         ],
diff --git a/ui/views/controls/button/checkbox.cc b/ui/views/controls/button/checkbox.cc
index 0b27318a..968aaf4 100644
--- a/ui/views/controls/button/checkbox.cc
+++ b/ui/views/controls/button/checkbox.cc
@@ -147,6 +147,10 @@
   UpdateImage();
 }
 
+void Checkbox::SetMultiLine(bool multi_line) {
+  label()->SetMultiLine(multi_line);
+}
+
 // TODO(tetsui): Remove this method and |use_md_| when MD for secondary UI
 // becomes default and IsSecondaryUiMaterial() is tautology.
 bool Checkbox::UseMd() const {
diff --git a/ui/views/controls/button/checkbox.h b/ui/views/controls/button/checkbox.h
index 49a02ff..7fc2735 100644
--- a/ui/views/controls/button/checkbox.h
+++ b/ui/views/controls/button/checkbox.h
@@ -37,6 +37,8 @@
   virtual void SetChecked(bool checked);
   bool checked() const { return checked_; }
 
+  void SetMultiLine(bool multi_line);
+
  protected:
   // Returns whether MD is enabled. Returns true if |force_md| in the
   // constructor or --secondary-ui-md flag is set.
diff --git a/ui/views/controls/scroll_view_unittest.cc b/ui/views/controls/scroll_view_unittest.cc
index 05a8b37..d57fbb05 100644
--- a/ui/views/controls/scroll_view_unittest.cc
+++ b/ui/views/controls/scroll_view_unittest.cc
@@ -99,6 +99,8 @@
     SetBounds(x(), y(), pref.width(), pref.height());
   }
 
+  void SetFocus() { Focus(); }
+
  private:
   DISALLOW_COPY_AND_ASSIGN(FixedView);
 };
@@ -633,6 +635,34 @@
   EXPECT_EQ(415 - viewport_height, test_api.CurrentOffset().y());
 }
 
+// Verifies that child scrolls into view when it's focused.
+TEST_F(ScrollViewTest, ScrollChildToVisibleOnFocus) {
+  ScrollViewTestApi test_api(&scroll_view_);
+  CustomView* contents = new CustomView;
+  scroll_view_.SetContents(contents);
+  contents->SetPreferredSize(gfx::Size(500, 1000));
+  FixedView* child = new FixedView;
+  child->SetPreferredSize(gfx::Size(10, 10));
+  child->SetPosition(gfx::Point(0, 405));
+  contents->AddChildView(child);
+
+  scroll_view_.SetBoundsRect(gfx::Rect(0, 0, 100, 100));
+  scroll_view_.Layout();
+  EXPECT_EQ(gfx::Point(), test_api.IntegralViewOffset());
+
+  // Set focus to the child control. This should cause the control to scroll to
+  // y=405 height=10. Like the above test, this should make the y position of
+  // the content at (405 + 10) - viewport_height (scroll region bottom aligned).
+  child->SetFocus();
+  const int viewport_height = test_api.contents_viewport()->height();
+
+  // Expect there to be a horizontal scrollbar, making the viewport shorter.
+  EXPECT_EQ(100 - scroll_view_.GetScrollBarLayoutHeight(), viewport_height);
+
+  gfx::ScrollOffset offset = test_api.CurrentOffset();
+  EXPECT_EQ(415 - viewport_height, offset.y());
+}
+
 // Verifies ClipHeightTo() uses the height of the content when it is between the
 // minimum and maximum height values.
 TEST_F(ScrollViewTest, ClipHeightToNormalContentHeight) {
diff --git a/ui/views/view.cc b/ui/views/view.cc
index 9710786b..8987c57 100644
--- a/ui/views/view.cc
+++ b/ui/views/view.cc
@@ -1478,6 +1478,10 @@
   }
 }
 
+void View::ScrollViewToVisible() {
+  ScrollRectToVisible(GetLocalBounds());
+}
+
 int View::GetPageScrollIncrement(ScrollView* scroll_view,
                                  bool is_horizontal, bool is_positive) {
   return 0;
@@ -1797,6 +1801,7 @@
 
 void View::Focus() {
   OnFocus();
+  ScrollViewToVisible();
 }
 
 void View::Blur() {
diff --git a/ui/views/view.h b/ui/views/view.h
index da4b110..23a3e5e 100644
--- a/ui/views/view.h
+++ b/ui/views/view.h
@@ -1108,6 +1108,10 @@
   // the child view, such as Viewport, to override appropriately.
   virtual void ScrollRectToVisible(const gfx::Rect& rect);
 
+  // Scrolls the view's bounds or some subset thereof to be visible. By default
+  // this function calls ScrollRectToVisible(GetLocalBounds()).
+  virtual void ScrollViewToVisible();
+
   // The following methods are used by ScrollView to determine the amount
   // to scroll relative to the visible bounds of the view. For example, a
   // return value of 10 indicates the scrollview should scroll 10 pixels in