diff --git a/chrome/android/java/res/layout/page_info_permission_row.xml b/chrome/android/java/res/layout/page_info_permission_row.xml
index aa207ce5..ca33e91a 100644
--- a/chrome/android/java/res/layout/page_info_permission_row.xml
+++ b/chrome/android/java/res/layout/page_info_permission_row.xml
@@ -20,7 +20,7 @@
 
     <TextView
         android:id="@+id/page_info_permission_status"
-        android:layout_width="match_parent"
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_toEndOf="@id/page_info_permission_icon"
         android:textAppearance="@style/BlackBodyDefault" />
diff --git a/chrome/browser/service_process/service_process_control_browsertest.cc b/chrome/browser/service_process/service_process_control_browsertest.cc
index 51807121..00436d9 100644
--- a/chrome/browser/service_process/service_process_control_browsertest.cc
+++ b/chrome/browser/service_process/service_process_control_browsertest.cc
@@ -220,8 +220,8 @@
 
 // This tests the case when a service process is launched when the browser
 // starts but we try to launch it again while setting up Cloud Print.
-// Flaky on Mac. Flaky on Windows ASan. http://crbug.com/517420
-#if defined(OS_MACOSX) || (defined(OS_WIN) && defined(ADDRESS_SANITIZER))
+// Flaky on Mac. Flaky on Windows. http://crbug.com/517420
+#if defined(OS_MACOSX) || defined(OS_WIN)
 #define MAYBE_LaunchTwice DISABLED_LaunchTwice
 #else
 #define MAYBE_LaunchTwice LaunchTwice
@@ -256,8 +256,8 @@
         FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
 }
 
-// Flaky on Mac and Windows ASan. http://crbug.com/517420
-#if defined(OS_MACOSX) || (defined(OS_WIN) && defined(ADDRESS_SANITIZER))
+// Flaky on Mac and Windows. http://crbug.com/517420
+#if defined(OS_MACOSX) || defined(OS_WIN)
 #define MAYBE_MultipleLaunchTasks DISABLED_MultipleLaunchTasks
 #else
 #define MAYBE_MultipleLaunchTasks MultipleLaunchTasks
@@ -278,8 +278,8 @@
   EXPECT_EQ(0, launch_count);
 }
 
-// Flaky on Mac and Windows ASan. http://crbug.com/517420
-#if defined(OS_MACOSX) || (defined(OS_WIN) && defined(ADDRESS_SANITIZER))
+// Flaky on Mac and Windows. http://crbug.com/517420
+#if defined(OS_MACOSX) || defined(OS_WIN)
 #define MAYBE_SameLaunchTask DISABLED_SameLaunchTask
 #else
 #define MAYBE_SameLaunchTask SameLaunchTask
@@ -300,8 +300,8 @@
 
 // Tests whether disconnecting from the service IPC causes the service process
 // to die.
-// Flaky on Mac and Windows ASan. http://crbug.com/517420
-#if defined(OS_MACOSX) || (defined(OS_WIN) && defined(ADDRESS_SANITIZER))
+// Flaky on Mac and Windows. http://crbug.com/517420
+#if defined(OS_MACOSX) || defined(OS_WIN)
 #define MAYBE_DieOnDisconnect DISABLED_DieOnDisconnect
 #else
 #define MAYBE_DieOnDisconnect DieOnDisconnect
@@ -315,8 +315,8 @@
   Disconnect();
 }
 
-// Flaky on Mac and Windows ASan. http://crbug.com/517420
-#if defined(OS_MACOSX) || (defined(OS_WIN) && defined(ADDRESS_SANITIZER))
+// Flaky on Mac and Windows. http://crbug.com/517420
+#if defined(OS_MACOSX) || defined(OS_WIN)
 #define MAYBE_ForceShutdown DISABLED_ForceShutdown
 #else
 #define MAYBE_ForceShutdown ForceShutdown
@@ -333,8 +333,8 @@
   ForceServiceProcessShutdown(version_info::GetVersionNumber(), service_pid);
 }
 
-// Flaky on Mac and Windows ASan. http://crbug.com/517420
-#if defined(OS_MACOSX) || (defined(OS_WIN) && defined(ADDRESS_SANITIZER))
+// Flaky on Mac and Windows. http://crbug.com/517420
+#if defined(OS_MACOSX) || defined(OS_WIN)
 #define MAYBE_CheckPid DISABLED_CheckPid
 #else
 #define MAYBE_CheckPid CheckPid
@@ -360,8 +360,9 @@
       base::TimeDelta()));
 }
 
-// Histograms disabled on OSX http://crbug.com/406227
-#if defined(OS_MACOSX)
+// Histograms disabled on OSX (http://crbug.com/406227) and Windows
+// (http://crbug.com/517420).
+#if defined(OS_MACOSX) || defined(OS_WIN)
 #define MAYBE_HistogramsTimeout DISABLED_HistogramsTimeout
 #define MAYBE_Histograms DISABLED_Histograms
 #else
diff --git a/chromeos/dbus/fake_shill_manager_client.cc b/chromeos/dbus/fake_shill_manager_client.cc
index cb78752b..a4f7daa 100644
--- a/chromeos/dbus/fake_shill_manager_client.cc
+++ b/chromeos/dbus/fake_shill_manager_client.cc
@@ -311,8 +311,10 @@
   merged_properties->GetStringWithoutPathExpansion(shill::kProfileProperty,
                                                    &profile_path);
   if (!profile_path.empty()) {
-    DBusThreadManager::Get()->GetShillProfileClient()->GetTestInterface()->
-        AddService(profile_path, service_path);
+    auto* profile_client =
+        DBusThreadManager::Get()->GetShillProfileClient()->GetTestInterface();
+    if (!profile_client->UpdateService(profile_path, service_path))
+      profile_client->AddService(profile_path, service_path);
   }
 
   base::ThreadTaskRunnerHandle::Get()->PostTask(
diff --git a/chromeos/network/managed_network_configuration_handler_unittest.cc b/chromeos/network/managed_network_configuration_handler_unittest.cc
index 6f162f8a6..d8cb7a1 100644
--- a/chromeos/network/managed_network_configuration_handler_unittest.cc
+++ b/chromeos/network/managed_network_configuration_handler_unittest.cc
@@ -257,6 +257,12 @@
     DBusThreadManager::Shutdown();
   }
 
+  TestNetworkPolicyObserver* policy_observer() { return &policy_observer_; }
+
+  ManagedNetworkConfigurationHandler* managed_handler() {
+    return managed_network_configuration_handler_.get();
+  }
+
   FakeShillServiceClient* GetShillServiceClient() {
     return static_cast<FakeShillServiceClient*>(
         DBusThreadManager::Get()->GetShillServiceClient());
@@ -540,51 +546,42 @@
   EXPECT_EQ(*expected_shill_properties, *properties);
 }
 
-TEST_F(ManagedNetworkConfigurationHandlerMockTest,
-       EnableManagedCredentialsWiFi) {
+TEST_F(ManagedNetworkConfigurationHandlerTest, EnableManagedCredentialsWiFi) {
   InitializeStandardProfiles();
   std::unique_ptr<base::DictionaryValue> expected_shill_properties =
       test_utils::ReadTestDictionary(
           "policy/shill_policy_autoconnect_on_unconfigured_wifi1.json");
 
-  EXPECT_CALL(*mock_profile_client_,
-              GetProperties(dbus::ObjectPath(kUser1ProfilePath), _, _));
-
-  EXPECT_CALL(*mock_manager_client_,
-              ConfigureServiceForProfile(
-                  dbus::ObjectPath(kUser1ProfilePath),
-                  IsEqualTo(expected_shill_properties.get()),
-                  _, _));
-
   SetPolicy(::onc::ONC_SOURCE_USER_POLICY, kUser1,
             "policy/policy_wifi1_autoconnect.onc");
   base::RunLoop().RunUntilIdle();
+
+  const base::DictionaryValue* properties =
+      GetShillServiceClient()->GetServiceProperties("policy_wifi1");
+  ASSERT_TRUE(properties);
+  EXPECT_EQ(*expected_shill_properties, *properties);
 }
 
-TEST_F(ManagedNetworkConfigurationHandlerMockTest,
-       EnableManagedCredentialsVPN) {
+TEST_F(ManagedNetworkConfigurationHandlerTest, EnableManagedCredentialsVPN) {
   InitializeStandardProfiles();
   std::unique_ptr<base::DictionaryValue> expected_shill_properties =
       test_utils::ReadTestDictionary(
           "policy/shill_policy_autoconnect_on_unconfigured_vpn.json");
 
-  EXPECT_CALL(*mock_profile_client_,
-              GetProperties(dbus::ObjectPath(kUser1ProfilePath), _, _));
-
-  EXPECT_CALL(*mock_manager_client_,
-              ConfigureServiceForProfile(
-                  dbus::ObjectPath(kUser1ProfilePath),
-                  IsEqualTo(expected_shill_properties.get()),
-                  _, _));
-
   SetPolicy(::onc::ONC_SOURCE_USER_POLICY, kUser1,
             "policy/policy_vpn_autoconnect.onc");
   base::RunLoop().RunUntilIdle();
+
+  const base::DictionaryValue* properties =
+      GetShillServiceClient()->GetServiceProperties(
+          "{a3860e83-f03d-4cb1-bafa-b22c9e746950}");
+  ASSERT_TRUE(properties);
+  EXPECT_EQ(*expected_shill_properties, *properties);
 }
 
 // Ensure that EAP settings for ethernet are matched with the right profile
 // entry and written to the dedicated EthernetEAP service.
-TEST_F(ManagedNetworkConfigurationHandlerMockTest,
+TEST_F(ManagedNetworkConfigurationHandlerTest,
        SetPolicyManageUnmanagedEthernetEAP) {
   InitializeStandardProfiles();
   std::unique_ptr<base::DictionaryValue> expected_shill_properties =
@@ -592,70 +589,59 @@
           "policy/"
           "shill_policy_on_unmanaged_ethernet_eap.json");
 
+  GetShillServiceClient()->AddService(
+      "eth_entry", std::string() /* guid */, std::string() /* name */,
+      "etherneteap", std::string() /* state */, true /* visible */);
+  GetShillProfileClient()->AddService(kUser1ProfilePath, "eth_entry");
   SetUpEntry("policy/shill_unmanaged_ethernet_eap.json",
              kUser1ProfilePath,
              "eth_entry");
 
   // Also setup an unrelated WiFi configuration to verify that the right entry
   // is matched.
+  GetShillServiceClient()->AddService(
+      "wifi_entry", std::string() /* guid */, "wifi1", shill::kTypeWifi,
+      std::string() /* state */, true /* visible */);
   SetUpEntry("policy/shill_unmanaged_wifi1.json",
              kUser1ProfilePath,
              "wifi_entry");
 
-  EXPECT_CALL(*mock_profile_client_,
-              GetProperties(dbus::ObjectPath(kUser1ProfilePath), _, _));
-
-  EXPECT_CALL(*mock_profile_client_,
-              GetEntry(dbus::ObjectPath(kUser1ProfilePath), _, _, _)).Times(2);
-
-  EXPECT_CALL(
-      *mock_profile_client_,
-      DeleteEntry(dbus::ObjectPath(kUser1ProfilePath), "eth_entry", _, _));
-
-  EXPECT_CALL(
-      *mock_manager_client_,
-      ConfigureServiceForProfile(dbus::ObjectPath(kUser1ProfilePath),
-                                 IsEqualTo(expected_shill_properties.get()),
-                                 _, _));
-
   SetPolicy(
       ::onc::ONC_SOURCE_USER_POLICY, kUser1, "policy/policy_ethernet_eap.onc");
   base::RunLoop().RunUntilIdle();
+
+  // Verify eth_entry is deleted.
+  {
+    std::string eth_profile_path;
+    base::DictionaryValue properties;
+    EXPECT_FALSE(GetShillProfileClient()->GetService(
+        "eth_entry", &eth_profile_path, &properties));
+  }
+
+  const base::DictionaryValue* properties =
+      GetShillServiceClient()->GetServiceProperties("guid");
+  ASSERT_TRUE(properties);
+  EXPECT_EQ(*expected_shill_properties, *properties);
 }
 
-TEST_F(ManagedNetworkConfigurationHandlerMockTest, SetPolicyIgnoreUnmodified) {
+TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyIgnoreUnmodified) {
   InitializeStandardProfiles();
-  EXPECT_CALL(*mock_profile_client_, GetProperties(_, _, _));
-
-  EXPECT_CALL(*mock_manager_client_, ConfigureServiceForProfile(_, _, _, _));
 
   SetPolicy(::onc::ONC_SOURCE_USER_POLICY, kUser1, "policy/policy_wifi1.onc");
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(1, policy_observer_.GetPoliciesAppliedCountAndReset());
-  VerifyAndClearExpectations();
+  EXPECT_EQ(1, policy_observer()->GetPoliciesAppliedCountAndReset());
 
   SetUpEntry("policy/shill_policy_on_unmanaged_wifi1.json",
              kUser1ProfilePath,
              "some_entry_path");
 
-  EXPECT_CALL(*mock_profile_client_, GetProperties(_, _, _));
-
-  EXPECT_CALL(
-      *mock_profile_client_,
-      GetEntry(dbus::ObjectPath(kUser1ProfilePath), "some_entry_path", _, _));
-
   SetPolicy(::onc::ONC_SOURCE_USER_POLICY, kUser1, "policy/policy_wifi1.onc");
-
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(1, policy_observer_.GetPoliciesAppliedCountAndReset());
+  EXPECT_EQ(1, policy_observer()->GetPoliciesAppliedCountAndReset());
 }
 
-TEST_F(ManagedNetworkConfigurationHandlerMockTest, PolicyApplicationRunning) {
+TEST_F(ManagedNetworkConfigurationHandlerTest, PolicyApplicationRunning) {
   InitializeStandardProfiles();
-  EXPECT_CALL(*mock_profile_client_, GetProperties(_, _, _)).Times(AnyNumber());
-  EXPECT_CALL(*mock_manager_client_, ConfigureServiceForProfile(_, _, _, _))
-      .Times(AnyNumber());
-  EXPECT_CALL(*mock_profile_client_, GetEntry(_, _, _, _)).Times(AnyNumber());
 
   EXPECT_FALSE(managed_handler()->IsAnyPolicyApplicationRunning());
 
@@ -681,37 +667,25 @@
   EXPECT_FALSE(managed_handler()->IsAnyPolicyApplicationRunning());
 }
 
-TEST_F(ManagedNetworkConfigurationHandlerMockTest, UpdatePolicyAfterFinished) {
+TEST_F(ManagedNetworkConfigurationHandlerTest, UpdatePolicyAfterFinished) {
   InitializeStandardProfiles();
-  EXPECT_CALL(*mock_profile_client_, GetProperties(_, _, _));
-  EXPECT_CALL(*mock_manager_client_, ConfigureServiceForProfile(_, _, _, _));
 
   SetPolicy(::onc::ONC_SOURCE_USER_POLICY, kUser1, "policy/policy_wifi1.onc");
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(1, policy_observer_.GetPoliciesAppliedCountAndReset());
-  VerifyAndClearExpectations();
+  EXPECT_EQ(1, policy_observer()->GetPoliciesAppliedCountAndReset());
 
   SetUpEntry("policy/shill_policy_on_unmanaged_wifi1.json",
              kUser1ProfilePath,
              "some_entry_path");
 
-  EXPECT_CALL(*mock_profile_client_, GetProperties(_, _, _));
-  EXPECT_CALL(
-      *mock_profile_client_,
-      GetEntry(dbus::ObjectPath(kUser1ProfilePath), "some_entry_path", _, _));
-  EXPECT_CALL(*mock_manager_client_, ConfigureServiceForProfile(_, _, _, _));
-
   SetPolicy(
       ::onc::ONC_SOURCE_USER_POLICY, kUser1, "policy/policy_wifi1_update.onc");
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(1, policy_observer_.GetPoliciesAppliedCountAndReset());
+  EXPECT_EQ(1, policy_observer()->GetPoliciesAppliedCountAndReset());
 }
 
-TEST_F(ManagedNetworkConfigurationHandlerMockTest, UpdatePolicyBeforeFinished) {
+TEST_F(ManagedNetworkConfigurationHandlerTest, UpdatePolicyBeforeFinished) {
   InitializeStandardProfiles();
-  EXPECT_CALL(*mock_profile_client_, GetProperties(_, _, _)).Times(2);
-  EXPECT_CALL(*mock_manager_client_, ConfigureServiceForProfile(_, _, _, _))
-      .Times(2);
 
   SetPolicy(::onc::ONC_SOURCE_USER_POLICY, kUser1, "policy/policy_wifi1.onc");
   // Usually the first call will cause a profile entry to be created, which we
@@ -720,7 +694,7 @@
       ::onc::ONC_SOURCE_USER_POLICY, kUser1, "policy/policy_wifi1_update.onc");
 
   base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(1, policy_observer_.GetPoliciesAppliedCountAndReset());
+  EXPECT_EQ(1, policy_observer()->GetPoliciesAppliedCountAndReset());
 }
 
 TEST_F(ManagedNetworkConfigurationHandlerMockTest, SetPolicyManageUnmanaged) {
diff --git a/chromeos/test/data/network/policy/shill_policy_autoconnect_on_unconfigured_vpn.json b/chromeos/test/data/network/policy/shill_policy_autoconnect_on_unconfigured_vpn.json
index f7b3adda..5e1ec5f 100644
--- a/chromeos/test/data/network/policy/shill_policy_autoconnect_on_unconfigured_vpn.json
+++ b/chromeos/test/data/network/policy/shill_policy_autoconnect_on_unconfigured_vpn.json
@@ -1,17 +1,24 @@
 {
   "AutoConnect": true,
-  "GUID":"{a3860e83-f03d-4cb1-bafa-b22c9e746950}",
+  "Device": "",
+  "GUID": "{a3860e83-f03d-4cb1-bafa-b22c9e746950}",
   "ManagedCredentials": true,
-  "Name":"my vpn",
-  "OpenVPN.Password":"some password",
-  "OpenVPN.Port":"443",
-  "OpenVPN.Proto":"udp",
-  "OpenVPN.RemoteCertKU":"",
-  "OpenVPN.User":"abc ${LOGIN_EMAIL} def",
-  "Provider.Host":"vpn.my.domain.com",
-  "Provider.Type":"openvpn",
+  "Name": "my vpn",
   "Profile": "/profile/user1/shill",
+  "Provider": {
+    "Host": "vpn.my.domain.com",
+    "OpenVPN.Password": "some password",
+    "OpenVPN.Port": "443",
+    "OpenVPN.Proto": "udp",
+    "OpenVPN.RemoteCertKU": "",
+    "OpenVPN.User": "abc ${LOGIN_EMAIL} def",
+    "Type":"openvpn"
+  },
+  "SSID": "{a3860e83-f03d-4cb1-bafa-b22c9e746950}",
+  "SaveCredentials": false,
+  "State": "idle",
+  "Type": "vpn",
   "UIData": "{\"onc_source\":\"user_policy\"}",
-  "SaveCredentials":false,
-  "Type":"vpn"
+  "Visible": true,
+  "WiFi.HexSSID":"7B61333836306538332D663033642D346362312D626166612D6232326339653734363935307D"
 }
diff --git a/chromeos/test/data/network/policy/shill_policy_autoconnect_on_unconfigured_wifi1.json b/chromeos/test/data/network/policy/shill_policy_autoconnect_on_unconfigured_wifi1.json
index 178e76b..3253959 100644
--- a/chromeos/test/data/network/policy/shill_policy_autoconnect_on_unconfigured_wifi1.json
+++ b/chromeos/test/data/network/policy/shill_policy_autoconnect_on_unconfigured_wifi1.json
@@ -1,12 +1,17 @@
 {
   "AutoConnect": true,
+  "Device": "/device/wifi1",
   "GUID": "policy_wifi1",
   "ManagedCredentials": true,
   "Mode": "managed",
+  "Name": "policy_wifi1",
   "Passphrase": "policy's passphrase",
   "Profile": "/profile/user1/shill",
+  "SSID": "policy_wifi1",
   "SecurityClass": "psk",
+  "State": "idle",
   "Type": "wifi",
   "UIData": "{\"onc_source\":\"user_policy\"}",
+  "Visible": true,
   "WiFi.HexSSID": "7769666931"  // "wifi1"
 }
diff --git a/chromeos/test/data/network/policy/shill_policy_on_unmanaged_ethernet_eap.json b/chromeos/test/data/network/policy/shill_policy_on_unmanaged_ethernet_eap.json
index ba74c29..c181d25 100644
--- a/chromeos/test/data/network/policy/shill_policy_on_unmanaged_ethernet_eap.json
+++ b/chromeos/test/data/network/policy/shill_policy_on_unmanaged_ethernet_eap.json
@@ -1,7 +1,13 @@
 {
-  "EAP.EAP":"TLS",
-  "GUID":"guid",
+  "Device": "",
+  "EAP.EAP": "TLS",
+  "GUID": "guid",
+  "Name": "guid",
   "Profile": "/profile/user1/shill",
-  "Type":"etherneteap",
-  "UIData": "{\"onc_source\":\"user_policy\"}"
+  "SSID": "guid",
+  "State": "idle",
+  "Type": "etherneteap",
+  "UIData": "{\"onc_source\":\"user_policy\"}",
+  "Visible": true,
+  "WiFi.HexSSID": "67756964"
 }
diff --git a/components/exo/keyboard.cc b/components/exo/keyboard.cc
index 0637eb9..3c7644c9 100644
--- a/components/exo/keyboard.cc
+++ b/components/exo/keyboard.cc
@@ -25,6 +25,14 @@
 // Delay until a key state change expected to be acknowledged is expired.
 const int kExpirationDelayForPendingKeyAcksMs = 1000;
 
+// These modifiers reflect what clients are supposed to be aware of.
+// I.e. EF_SCROLL_LOCK_ON is missing because clients are not supposed
+// to be aware scroll lock.
+const int kModifierMask = ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN |
+                          ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN |
+                          ui::EF_ALTGR_DOWN | ui::EF_MOD3_DOWN |
+                          ui::EF_NUM_LOCK_ON | ui::EF_CAPS_LOCK_ON;
+
 // The accelerator keys reserved to be processed by chrome.
 const struct {
   ui::KeyboardCode keycode;
@@ -198,13 +206,6 @@
 // ui::EventHandler overrides:
 
 void Keyboard::OnKeyEvent(ui::KeyEvent* event) {
-  // These modifiers reflect what clients are supposed to be aware of.
-  // I.e. EF_SCROLL_LOCK_ON is missing because clients are not supposed
-  // to be aware scroll lock.
-  const int kModifierMask = ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN |
-                            ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN |
-                            ui::EF_ALTGR_DOWN | ui::EF_MOD3_DOWN |
-                            ui::EF_NUM_LOCK_ON | ui::EF_CAPS_LOCK_ON;
   int modifier_flags = event->flags() & kModifierMask;
   if (modifier_flags != modifier_flags_) {
     modifier_flags_ = modifier_flags;
@@ -313,6 +314,7 @@
     pending_key_acks_.clear();
   }
   if (surface) {
+    modifier_flags_ = seat_->modifier_flags() & kModifierMask;
     delegate_->OnKeyboardModifiers(modifier_flags_);
     delegate_->OnKeyboardEnter(surface, seat_->pressed_keys());
     focus_ = surface;
diff --git a/components/exo/keyboard_unittest.cc b/components/exo/keyboard_unittest.cc
index 4a826b6a..ccf6f9173 100644
--- a/components/exo/keyboard_unittest.cc
+++ b/components/exo/keyboard_unittest.cc
@@ -80,7 +80,7 @@
   // Pressing key before Keyboard instance is created and surface has
   // received focus.
   ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow());
-  generator.PressKey(ui::VKEY_A, 0);
+  generator.PressKey(ui::VKEY_A, ui::EF_SHIFT_DOWN);
 
   aura::client::FocusClient* focus_client =
       aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow());
@@ -94,7 +94,7 @@
 
   EXPECT_CALL(delegate, CanAcceptKeyboardEventsForSurface(surface.get()))
       .WillOnce(testing::Return(true));
-  EXPECT_CALL(delegate, OnKeyboardModifiers(0));
+  EXPECT_CALL(delegate, OnKeyboardModifiers(ui::EF_SHIFT_DOWN));
   EXPECT_CALL(delegate, OnKeyboardEnter(
                             surface.get(),
                             base::flat_set<ui::DomCode>({ui::DomCode::US_A})));
diff --git a/components/exo/seat.cc b/components/exo/seat.cc
index 53dc984..32ba99c3 100644
--- a/components/exo/seat.cc
+++ b/components/exo/seat.cc
@@ -117,6 +117,7 @@
       NOTREACHED();
       break;
   }
+  modifier_flags_ = event->flags();
 }
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/components/exo/seat.h b/components/exo/seat.h
index f247a43..c2c59e5 100644
--- a/components/exo/seat.h
+++ b/components/exo/seat.h
@@ -46,6 +46,9 @@
     return pressed_keys_;
   }
 
+  // Returns current set of modifier flags.
+  int modifier_flags() const { return modifier_flags_; }
+
   // Sets clipboard data from |source|.
   void SetSelection(DataSource* source);
 
@@ -70,6 +73,7 @@
 
   base::ObserverList<SeatObserver> observers_;
   base::flat_set<ui::DomCode> pressed_keys_;
+  int modifier_flags_ = 0;
 
   // Data source being used as a clipboard content.
   std::unique_ptr<ScopedDataSource> selection_source_;
diff --git a/ios/build/bots/chromium.fyi/ios-device-goma-canary-clobber.json b/ios/build/bots/chromium.fyi/ios-device-goma-canary-clobber.json
new file mode 100644
index 0000000..7f7f3c7
--- /dev/null
+++ b/ios/build/bots/chromium.fyi/ios-device-goma-canary-clobber.json
@@ -0,0 +1,27 @@
+{
+  "comments": [
+    "Goma canary builder for iOS.",
+    "It is chromium.mac/ios-device.json + use_goma_canary, clobber."
+  ],
+  "xcode version": "9.0",
+  "gn_args": [
+    "additional_target_cpus=[ \"arm64\" ]",
+    "goma_dir=\"$(goma_dir)\"",
+    "ios_enable_code_signing=false",
+    "is_component_build=false",
+    "is_debug=false",
+    "target_cpu=\"arm\"",
+    "target_os=\"ios\"",
+    "use_goma=true"
+  ],
+  "additional_compile_targets": [
+    "all"
+  ],
+  "configuration": "Release",
+  "explain": true,
+  "sdk": "iphoneos11.0",
+  "tests": [
+  ],
+  "clobber": true,
+  "use_goma_canary": true
+}
diff --git a/ios/build/bots/chromium.mac/ios-device.json b/ios/build/bots/chromium.mac/ios-device.json
index 427be0c..c1ebd09 100644
--- a/ios/build/bots/chromium.mac/ios-device.json
+++ b/ios/build/bots/chromium.mac/ios-device.json
@@ -2,7 +2,7 @@
   "comments": [
     "Builder for 32-bit devices.",
     "Build is performed with gn+ninja.",
-    "If modified, please change chromium.fyi/GomaCanaryiOS.json too."
+    "If modified, please change chromium.fyi/ios-device-goma-canary-clobber.json too."
   ],
   "xcode version": "9.0",
   "gn_args": [
diff --git a/net/log/file_net_log_observer.cc b/net/log/file_net_log_observer.cc
index 3feaa97..5778786 100644
--- a/net/log/file_net_log_observer.cc
+++ b/net/log/file_net_log_observer.cc
@@ -462,7 +462,7 @@
   memory_ = 0;
 }
 
-FileNetLogObserver::WriteQueue::~WriteQueue() {}
+FileNetLogObserver::WriteQueue::~WriteQueue() = default;
 
 FileNetLogObserver::FileWriter::FileWriter(
     const base::FilePath& log_path,
@@ -476,7 +476,7 @@
       wrote_event_bytes_(false),
       task_runner_(std::move(task_runner)) {}
 
-FileNetLogObserver::FileWriter::~FileWriter() {}
+FileNetLogObserver::FileWriter::~FileWriter() = default;
 
 void FileNetLogObserver::FileWriter::Initialize(
     std::unique_ptr<base::Value> constants_value) {
diff --git a/net/log/net_log.cc b/net/log/net_log.cc
index bff7a67..3f2ecc9 100644
--- a/net/log/net_log.cc
+++ b/net/log/net_log.cc
@@ -108,8 +108,7 @@
 NetLog::NetLog() : last_id_(0), is_capturing_(0) {
 }
 
-NetLog::~NetLog() {
-}
+NetLog::~NetLog() = default;
 
 void NetLog::AddGlobalEntry(NetLogEventType type) {
   AddEntry(type, NetLogSource(NetLogSourceType::NONE, NextID()),
diff --git a/net/log/net_log_entry.cc b/net/log/net_log_entry.cc
index 1258139..3cdfc452 100644
--- a/net/log/net_log_entry.cc
+++ b/net/log/net_log_entry.cc
@@ -58,12 +58,12 @@
       time(time),
       parameters_callback(parameters_callback) {}
 
-NetLogEntryData::~NetLogEntryData() {}
+NetLogEntryData::~NetLogEntryData() = default;
 
 NetLogEntry::NetLogEntry(const NetLogEntryData* data,
                          NetLogCaptureMode capture_mode)
     : data_(data), capture_mode_(capture_mode) {}
 
-NetLogEntry::~NetLogEntry() {}
+NetLogEntry::~NetLogEntry() = default;
 
 }  // namespace net
diff --git a/net/log/net_log_unittest.cc b/net/log/net_log_unittest.cc
index e0e8b66..b6dce8b 100644
--- a/net/log/net_log_unittest.cc
+++ b/net/log/net_log_unittest.cc
@@ -126,7 +126,7 @@
 
 class LoggingObserver : public NetLog::ThreadSafeObserver {
  public:
-  LoggingObserver() {}
+  LoggingObserver() = default;
 
   ~LoggingObserver() override {
     if (net_log())
@@ -191,8 +191,8 @@
 // A thread that adds a bunch of events to the NetLog.
 class AddEventsTestThread : public NetLogTestThread {
  public:
-  AddEventsTestThread() {}
-  ~AddEventsTestThread() override {}
+  AddEventsTestThread() = default;
+  ~AddEventsTestThread() override = default;
 
  private:
   void RunTestThread() override {
@@ -206,7 +206,7 @@
 // A thread that adds and removes an observer from the NetLog repeatedly.
 class AddRemoveObserverTestThread : public NetLogTestThread {
  public:
-  AddRemoveObserverTestThread() {}
+  AddRemoveObserverTestThread() = default;
 
   ~AddRemoveObserverTestThread() override { EXPECT_TRUE(!observer_.net_log()); }
 
diff --git a/net/log/test_net_log.cc b/net/log/test_net_log.cc
index 8cdccea..36ef00d 100644
--- a/net/log/test_net_log.cc
+++ b/net/log/test_net_log.cc
@@ -18,8 +18,8 @@
 // that saves messages to a buffer.
 class TestNetLog::Observer : public NetLog::ThreadSafeObserver {
  public:
-  Observer() {}
-  ~Observer() override {}
+  Observer() = default;
+  ~Observer() override = default;
 
   // Returns the list of all entries in the log.
   void GetEntries(TestNetLogEntry::List* entry_list) const {
@@ -110,8 +110,7 @@
     : net_log_(NetLogWithSource::Make(&test_net_log_, NetLogSourceType::NONE)) {
 }
 
-BoundTestNetLog::~BoundTestNetLog() {
-}
+BoundTestNetLog::~BoundTestNetLog() = default;
 
 void BoundTestNetLog::GetEntries(TestNetLogEntry::List* entry_list) const {
   test_net_log_.GetEntries(entry_list);
diff --git a/net/log/test_net_log_entry.cc b/net/log/test_net_log_entry.cc
index e8beb757..1936ef3 100644
--- a/net/log/test_net_log_entry.cc
+++ b/net/log/test_net_log_entry.cc
@@ -30,8 +30,7 @@
   *this = entry;
 }
 
-TestNetLogEntry::~TestNetLogEntry() {
-}
+TestNetLogEntry::~TestNetLogEntry() = default;
 
 TestNetLogEntry& TestNetLogEntry::operator=(const TestNetLogEntry& entry) {
   type = entry.type;
diff --git a/net/log/trace_net_log_observer.cc b/net/log/trace_net_log_observer.cc
index 4349c3c..ed3286f 100644
--- a/net/log/trace_net_log_observer.cc
+++ b/net/log/trace_net_log_observer.cc
@@ -30,7 +30,7 @@
       : value_(std::move(value)) {}
 
  private:
-  ~TracedValue() override {}
+  ~TracedValue() override = default;
 
   void AppendAsTraceFormat(std::string* out) const override {
     if (value_) {
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index f5af41d..b501fa7 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -1,4 +1,9 @@
 {
+  "Android Builder (dbg) Goma Canary": {
+    "additional_compile_targets": [
+      "all"
+    ]
+  },
   "Android Builder Goma Canary (dbg)": {
     "additional_compile_targets": [
       "all"
@@ -2950,25 +2955,6 @@
       }
     ]
   },
-  "CrWin7Goma(clbr)": {
-    "additional_compile_targets": [
-      "all"
-    ],
-    "gtest_tests": [
-      {
-        "swarming": {
-          "can_use_on_swarming_builders": true
-        },
-        "test": "base_unittests"
-      },
-      {
-        "swarming": {
-          "can_use_on_swarming_builders": true
-        },
-        "test": "content_unittests"
-      }
-    ]
-  },
   "CrWin7Goma(dbg)": {
     "additional_compile_targets": [
       "all"
@@ -4418,11 +4404,164 @@
       }
     ]
   },
+  "Linux Builder Goma Canary": {
+    "additional_compile_targets": [
+      "all"
+    ],
+    "gtest_tests": [
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "base_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "content_unittests"
+      }
+    ]
+  },
   "Linux Clang Analyzer": {
     "additional_compile_targets": [
       "chrome"
     ]
   },
+  "Linux x64 Goma Canary (clobber)": {
+    "additional_compile_targets": [
+      "all"
+    ],
+    "gtest_tests": [
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "base_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "content_unittests"
+      }
+    ]
+  },
+  "Linux x64 Goma Canary LocalOutputCache": {
+    "additional_compile_targets": [
+      "all"
+    ],
+    "gtest_tests": [
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "base_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "content_unittests"
+      }
+    ]
+  },
+  "Mac Builder (dbg) Goma Canary": {
+    "additional_compile_targets": [
+      "all"
+    ],
+    "gtest_tests": [
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "base_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "content_unittests"
+      }
+    ]
+  },
+  "Mac Builder (dbg) Goma Canary (clobber)": {
+    "additional_compile_targets": [
+      "all"
+    ],
+    "gtest_tests": [
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "base_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "content_unittests"
+      }
+    ]
+  },
+  "Mac Builder Goma Canary": {
+    "additional_compile_targets": [
+      "all",
+      "pdf_fuzzers"
+    ],
+    "gtest_tests": [
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "base_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "content_unittests"
+      }
+    ]
+  },
+  "Mac Goma Canary (clobber)": {
+    "additional_compile_targets": [
+      "all"
+    ],
+    "gtest_tests": [
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "base_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "content_unittests"
+      }
+    ]
+  },
+  "Mac Goma Canary LocalOutputCache": {
+    "additional_compile_targets": [
+      "all"
+    ],
+    "gtest_tests": [
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "base_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "content_unittests"
+      }
+    ]
+  },
   "Mojo ChromiumOS": {
     "additional_compile_targets": [
       "mash:all"
@@ -6908,6 +7047,25 @@
       }
     ]
   },
+  "ToTWin Goma Canary": {
+    "additional_compile_targets": [
+      "all"
+    ],
+    "gtest_tests": [
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "base_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "content_unittests"
+      }
+    ]
+  },
   "UBSanVptr Linux": {
     "gtest_tests": [
       {
@@ -7620,5 +7778,145 @@
         "test": "zucchini_unittests"
       }
     ]
+  },
+  "Win Builder (dbg) Goma Canary": {
+    "additional_compile_targets": [
+      "all"
+    ],
+    "gtest_tests": [
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "base_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "content_unittests"
+      }
+    ]
+  },
+  "Win Builder Goma Canary": {
+    "additional_compile_targets": [
+      "all",
+      "pdf_fuzzers"
+    ],
+    "gtest_tests": [
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "base_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "content_unittests"
+      }
+    ]
+  },
+  "Win Goma Canary LocalOutputCache": {
+    "additional_compile_targets": [
+      "all"
+    ],
+    "gtest_tests": [
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "base_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "content_unittests"
+      }
+    ]
+  },
+  "Win cl.exe Goma Canary LocalOutputCache": {
+    "additional_compile_targets": [
+      "all"
+    ],
+    "gtest_tests": [
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "base_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "content_unittests"
+      }
+    ]
+  },
+  "Win7 Builder (dbg) Goma Canary": {
+    "additional_compile_targets": [
+      "all"
+    ],
+    "gtest_tests": [
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "base_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "content_unittests"
+      }
+    ]
+  },
+  "Win7 Builder Goma Canary": {
+    "additional_compile_targets": [
+      "all",
+      "pdf_fuzzers"
+    ],
+    "gtest_tests": [
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "base_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "content_unittests"
+      }
+    ]
+  },
+  "WinMSVC64 Goma Canary": {
+    "additional_compile_targets": [
+      "all"
+    ],
+    "gtest_tests": [
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "base_unittests"
+      },
+      {
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "content_unittests"
+      }
+    ]
+  },
+  "chromeos-amd64-generic-rel-goma-canary": {
+    "additional_compile_targets": [
+      "chromiumos_preflight"
+    ]
   }
 }
diff --git a/third_party/WebKit/Source/core/dom/Element.cpp b/third_party/WebKit/Source/core/dom/Element.cpp
index 736b0cd..2020c8ce 100644
--- a/third_party/WebKit/Source/core/dom/Element.cpp
+++ b/third_party/WebKit/Source/core/dom/Element.cpp
@@ -2417,13 +2417,6 @@
     }
     return nullptr;
   }
-  if (AlwaysCreateUserAgentShadowRoot()) {
-    exception_state.ThrowDOMException(
-        kInvalidStateError,
-        "Shadow root cannot be created on a host which already hosts a "
-        "user-agent shadow tree.");
-    return nullptr;
-  }
   // Some elements make assumptions about what kind of layoutObjects they allow
   // as children so we can't allow author shadows on them for now.
   if (!AreAuthorShadowsAllowed()) {
@@ -2491,8 +2484,6 @@
 ShadowRoot& Element::CreateShadowRootInternal() {
   DCHECK(!ClosedShadowRoot());
   DCHECK(AreAuthorShadowsAllowed());
-  if (AlwaysCreateUserAgentShadowRoot())
-    EnsureUserAgentShadowRoot();
   GetDocument().SetShadowCascadeOrder(ShadowCascadeOrder::kShadowCascadeV0);
   return EnsureShadow().AddShadowRoot(*this, ShadowRootType::V0);
 }
@@ -2508,7 +2499,6 @@
   DCHECK(AreAuthorShadowsAllowed());
   DCHECK(type == ShadowRootType::kOpen || type == ShadowRootType::kClosed)
       << type;
-  DCHECK(!AlwaysCreateUserAgentShadowRoot());
 
   GetDocument().SetShadowCascadeOrder(ShadowCascadeOrder::kShadowCascadeV1);
   ShadowRoot& shadow_root = EnsureShadow().AddShadowRoot(*this, type);
diff --git a/third_party/WebKit/Source/core/dom/Element.h b/third_party/WebKit/Source/core/dom/Element.h
index acfccbd..86df572 100644
--- a/third_party/WebKit/Source/core/dom/Element.h
+++ b/third_party/WebKit/Source/core/dom/Element.h
@@ -944,7 +944,6 @@
   // FIXME: Everyone should allow author shadows.
   virtual bool AreAuthorShadowsAllowed() const { return true; }
   virtual void DidAddUserAgentShadowRoot(ShadowRoot&) {}
-  virtual bool AlwaysCreateUserAgentShadowRoot() const { return false; }
 
   enum SynchronizationOfLazyAttribute {
     kNotInSynchronizationOfLazyAttribute = 0,
diff --git a/third_party/WebKit/Source/core/frame/WebLocalFrameImpl.cpp b/third_party/WebKit/Source/core/frame/WebLocalFrameImpl.cpp
index d2d5fcc..9833489e 100644
--- a/third_party/WebKit/Source/core/frame/WebLocalFrameImpl.cpp
+++ b/third_party/WebKit/Source/core/frame/WebLocalFrameImpl.cpp
@@ -663,8 +663,8 @@
     int world_id,
     const WebSecurityOrigin& security_origin) {
   DCHECK(GetFrame());
-  DOMWrapperWorld::SetIsolatedWorldSecurityOrigin(world_id,
-                                                  security_origin.Get());
+  DOMWrapperWorld::SetIsolatedWorldSecurityOrigin(
+      world_id, security_origin.Get()->IsolatedCopy());
 }
 
 void WebLocalFrameImpl::SetIsolatedWorldContentSecurityPolicy(
diff --git a/third_party/WebKit/Source/core/html/forms/HTMLButtonElement.h b/third_party/WebKit/Source/core/html/forms/HTMLButtonElement.h
index 14ec75c..bca4665 100644
--- a/third_party/WebKit/Source/core/html/forms/HTMLButtonElement.h
+++ b/third_party/WebKit/Source/core/html/forms/HTMLButtonElement.h
@@ -49,9 +49,6 @@
 
   LayoutObject* CreateLayoutObject(const ComputedStyle&) override;
 
-  // HTMLFormControlElement always creates one, but buttons don't need it.
-  bool AlwaysCreateUserAgentShadowRoot() const override { return false; }
-
   Node::InsertionNotificationRequest InsertedInto(ContainerNode*) override;
   void ParseAttribute(const AttributeModificationParams&) override;
   bool IsPresentationAttribute(const QualifiedName&) const override;
diff --git a/third_party/WebKit/Source/core/html/forms/HTMLFieldSetElement.h b/third_party/WebKit/Source/core/html/forms/HTMLFieldSetElement.h
index f70f9b8..d49cdea 100644
--- a/third_party/WebKit/Source/core/html/forms/HTMLFieldSetElement.h
+++ b/third_party/WebKit/Source/core/html/forms/HTMLFieldSetElement.h
@@ -56,7 +56,6 @@
   void ChildrenChanged(const ChildrenChange&) override;
   bool AreAuthorShadowsAllowed() const override { return false; }
   bool IsSubmittableElement() override;
-  bool AlwaysCreateUserAgentShadowRoot() const override { return false; }
 
   Element* InvalidateDescendantDisabledStateAndFindFocusedOne(Element& base);
 };
diff --git a/third_party/WebKit/Source/core/html/forms/HTMLFormControlElement.h b/third_party/WebKit/Source/core/html/forms/HTMLFormControlElement.h
index 17967d2..02971569 100644
--- a/third_party/WebKit/Source/core/html/forms/HTMLFormControlElement.h
+++ b/third_party/WebKit/Source/core/html/forms/HTMLFormControlElement.h
@@ -175,7 +175,6 @@
 
  private:
   bool IsFormControlElement() const final { return true; }
-  bool AlwaysCreateUserAgentShadowRoot() const override { return true; }
 
   int tabIndex() const override;
 
diff --git a/third_party/WebKit/Source/core/html/media/HTMLMediaElement.h b/third_party/WebKit/Source/core/html/media/HTMLMediaElement.h
index ef6759c..608d74c9 100644
--- a/third_party/WebKit/Source/core/html/media/HTMLMediaElement.h
+++ b/third_party/WebKit/Source/core/html/media/HTMLMediaElement.h
@@ -356,7 +356,6 @@
 
   void ResetMediaPlayerAndMediaSource();
 
-  bool AlwaysCreateUserAgentShadowRoot() const final { return true; }
   bool AreAuthorShadowsAllowed() const final { return false; }
 
   bool SupportsFocus() const final;
diff --git a/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp b/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp
index 9df2421b..16142680 100644
--- a/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp
+++ b/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp
@@ -328,6 +328,12 @@
              : GetExecutionContext()->GetSecurityOrigin();
 }
 
+SecurityOrigin* XMLHttpRequest::GetMutableSecurityOrigin() {
+  return isolated_world_security_origin_
+             ? isolated_world_security_origin_.get()
+             : GetExecutionContext()->GetMutableSecurityOrigin();
+}
+
 XMLHttpRequest::State XMLHttpRequest::readyState() const {
   return state_;
 }
@@ -376,7 +382,7 @@
     response_document_ = XMLDocument::Create(init);
 
   // FIXME: Set Last-Modified.
-  response_document_->SetSecurityOrigin(GetSecurityOrigin());
+  response_document_->SetSecurityOrigin(GetMutableSecurityOrigin());
   response_document_->SetContextFeatures(GetDocument()->GetContextFeatures());
   response_document_->SetMimeType(FinalResponseMIMETypeWithFallback());
 }
diff --git a/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.h b/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.h
index 387e8ec5..2e66153d 100644
--- a/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.h
+++ b/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.h
@@ -181,6 +181,7 @@
   // created in an isolated world. Otherwise, returns the SecurityOrigin of the
   // execution context.
   SecurityOrigin* GetSecurityOrigin() const;
+  SecurityOrigin* GetMutableSecurityOrigin();
 
   void DidSendData(unsigned long long bytes_sent,
                    unsigned long long total_bytes_to_be_sent) override;
diff --git a/third_party/WebKit/public/web/WebLocalFrame.h b/third_party/WebKit/public/web/WebLocalFrame.h
index acca6f64..fc8810b8 100644
--- a/third_party/WebKit/public/web/WebLocalFrame.h
+++ b/third_party/WebKit/public/web/WebLocalFrame.h
@@ -370,6 +370,10 @@
   // Associates an isolated world (see above for description) with a security
   // origin. XMLHttpRequest instances used in that world will be considered
   // to come from that origin, not the frame's.
+  //
+  // Currently the origin shouldn't be aliased, because IsolatedCopy() is
+  // taken before associating it to an isolated world and aliased relationship,
+  // if any, is broken. crbug.com/779730
   virtual void SetIsolatedWorldSecurityOrigin(int world_id,
                                               const WebSecurityOrigin&) = 0;
 
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl
index b6339b3..29d49e8 100644
--- a/tools/mb/mb_config.pyl
+++ b/tools/mb/mb_config.pyl
@@ -163,7 +163,10 @@
     'chromium.fyi': {
       'Afl Upload Linux ASan': 'release_afl_asan',
       'Android Builder (dbg)': 'android_debug_static_bot_vrdata',
+
       'Android Builder Goma Canary (dbg)': 'android_debug_static_bot_vrdata',
+      'Android Builder (dbg) Goma Canary': 'android_debug_static_bot_vrdata',
+
       'Android deterministic': 'android_without_codecs_release_bot_minimal_symbols',
       'Android deterministic (dbg)': 'android_debug_bot',
       'Browser Side Navigation Linux': 'release_bot',
@@ -171,20 +174,37 @@
       'CFI Linux ToT': 'clang_tot_cfi_full_cfi_diag_thin_lto_release_static_dcheck_always_on',
       'CFI Linux (icall)': 'cfi_full_diag_icall_release_static_dcheck_always_on',
       'ChromeOS amd64 Chromium Goma Canary': 'cros_chrome_sdk',
+      'chromeos-amd64-generic-rel-goma-canary': 'cros_chrome_sdk',
+
       'Chromium Linux Goma Canary': 'release_trybot',
+      'Linux Builder Goma Canary': 'release_bot',
+
       'Chromium Linux Goma Canary (clobber)': 'release_bot',
+      'Linux x64 Goma Canary (clobber)': 'release_bot',
+
       'Chromium Linux Goma Canary LocalOutputCache': 'release_bot',
-      'Chromium Linux Precise Goma LinkTest': 'release_bot',
-      'Chromium Linux32 Goma Canary (clobber)': 'release_bot_x86',
+      'Linux x64 Goma Canary LocalOutputCache': 'release_bot',
+
       'Chromium Mac 10.10 MacViews': 'mac_views_browser_release_bot',
       'Chromium Mac 10.11': 'release_bot',
       'Chromium Mac 10.11 Force Mac Toolchain': 'release_bot_mac_new_sdk',
       'Chromium Mac 10.13': 'release_bot',
+
       'Chromium Mac 10.9 Goma Canary': 'gpu_tests_release_trybot',
+      'Mac Builder Goma Canary': 'gpu_tests_release_bot',
+
       'Chromium Mac 10.9 Goma Canary (clobber)': 'release_bot_mac_strip',
+      'Mac Goma Canary (clobber)': 'release_bot_mac_strip',
+
       'Chromium Mac 10.9 Goma Canary (dbg)': 'debug_trybot',
+      'Mac Builder (dbg) Goma Canary': 'debug_bot',
+
       'Chromium Mac 10.9 Goma Canary (dbg)(clobber)': 'debug_trybot',
+      'Mac Builder (dbg) Goma Canary (clobber)': 'debug_bot',
+
       'Chromium Mac Goma Canary LocalOutputCache': 'release_bot_mac_strip',
+      'Mac Goma Canary LocalOutputCache': 'release_bot_mac_strip',
+
       'Chromium Win 10 GCE Tests': 'release_bot_minimal_symbols',
       'Chromium Win PGO Builder': {
         '1': 'official_optimize_chrome_pgo_phase_1_x86',
@@ -195,21 +215,40 @@
         '2': 'official_optimize_chrome_pgo_phase_2',
       },
       'Chromium Windows Analyze': 'windows_analyze',
+
       'CrWin7Goma': 'gpu_tests_release_trybot_x86_minimal_symbols',
+      'Win7 Builder Goma Canary': 'release_bot_x86_minimal_symbols',
+
       'CrWin7Goma(dbg)': 'debug_trybot_x86_minimal_symbols',
+      'Win7 Builder (dbg) Goma Canary': 'debug_trybot_x86_minimal_symbols',
+
       'CrWin7Goma(dll)': 'gpu_tests_release_trybot_x86_shared_minimal_symbols',
+      'Win cl.exe Goma Canary LocalOutputCache': 'release_bot_x86_minimal_symbols_no_clang',
+
       'CrWinGoma': 'gpu_tests_release_trybot_x86_minimal_symbols',
+      'Win Builder Goma Canary': 'release_bot_x86_minimal_symbols',
+
       'CrWinGoma(dll)': 'gpu_tests_release_trybot_x86_shared_minimal_symbols',
+      'Win Builder (dbg) Goma Canary': 'debug_bot_x86_minimal_symbols',
+
       'CrWinGoma(loc)': 'release_bot_x86_minimal_symbols',
+      'Win Goma Canary LocalOutputCache': 'release_bot_x86_minimal_symbols',
+
       'CrWinClexeGoma': 'release_bot_x86_minimal_symbols_no_clang',
+      'WinMSVC64 Goma Canary': 'win_msvc_release_bot',
+
       'CrWinClangGoma': 'clang_official_release_bot_minimal_symbols_x86_clang',
+      'ToTWin Goma Canary': 'clang_tot_official_minimal_symbols_static_release_x86',
 
       'EarlGreyiOS': 'ios',
       'Fuchsia (dbg)': 'debug_bot_fuchsia',
       'Fuchsia ARM64': 'release_bot_fuchsia_arm64',
       'Fuchsia x64': 'release_bot_fuchsia',
       'Fuchsia': 'release_bot_fuchsia',
+
       'GomaCanaryiOS': 'ios',
+      'ios-device-goma-canary-clobber': 'ios',
+
       'ios-simulator': 'ios',
       'Headless Linux (dbg)': 'headless_linux_debug_bot',
       'Jumbo Linux x64': 'jumbo_release_bot',
@@ -219,6 +258,7 @@
       'MD Top Chrome ChromeOS non-material': 'chromeos_with_codecs_debug_bot',
       'MD Top Chrome Win material': 'debug_bot_minimal_symbols',
       'MD Top Chrome Linux material': 'debug_bot',
+      'Leak Detection Linux': 'release_bot',
       'Libfuzzer Upload Linux ASan': 'release_libfuzzer_asan',
       'Libfuzzer Upload Linux ASan Debug': 'debug_libfuzzer_asan',
       'Libfuzzer Upload Linux MSan': 'release_libfuzzer_msan',