diff --git a/ash/common/system/chromeos/session/logout_button_tray.cc b/ash/common/system/chromeos/session/logout_button_tray.cc
index 8e8fafa..4e5a763cf 100644
--- a/ash/common/system/chromeos/session/logout_button_tray.cc
+++ b/ash/common/system/chromeos/session/logout_button_tray.cc
@@ -48,7 +48,7 @@
   button->AdjustFontSize(2);
   button_ = button;
 
-  // Since |logout_button_tray| has a red background and it is distinguished
+  // Since LogoutButtonTray has a red background and it is distinguished
   // by itself, no separator is needed on its right side.
   set_separator_visibility(false);
   tray_container()->AddChildView(button_);
diff --git a/ash/common/system/overview/overview_button_tray.cc b/ash/common/system/overview/overview_button_tray.cc
index 4bd5aad..105320e 100644
--- a/ash/common/system/overview/overview_button_tray.cc
+++ b/ash/common/system/overview/overview_button_tray.cc
@@ -56,6 +56,10 @@
   SetIconBorderForShelfAlignment();
   tray_container()->AddChildView(icon_);
 
+  // Since OverviewButtonTray is located on the rightmost position of a
+  // horizontal shelf, no separator is required.
+  set_separator_visibility(false);
+
   WmShell::Get()->AddShellObserver(this);
   WmShell::Get()->GetSessionStateDelegate()->AddSessionStateObserver(this);
 }
diff --git a/ash/common/system/tray/system_tray.cc b/ash/common/system/tray/system_tray.cc
index 2b7022927..24fa1b26 100644
--- a/ash/common/system/tray/system_tray.cc
+++ b/ash/common/system/tray/system_tray.cc
@@ -221,8 +221,9 @@
     SetInkDropMode(InkDropMode::ON);
     SetContentsBackground(false);
 
-    // Since |system_tray| locates on the right most position, no separator is
-    // required on its right side.
+    // Since user avatar is on the right hand side of System tray of a
+    // horizontal shelf and that is sufficient to indicate separation, no
+    // separator is required.
     set_separator_visibility(false);
   } else {
     SetContentsBackground(true);
diff --git a/chrome/VERSION b/chrome/VERSION
index 4d5b2fc..b8a160ca 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=58
 MINOR=0
-BUILD=3017
+BUILD=3018
 PATCH=0
diff --git a/chrome/browser/extensions/webstore_inline_installer.cc b/chrome/browser/extensions/webstore_inline_installer.cc
index ac7bee9..f22278a 100644
--- a/chrome/browser/extensions/webstore_inline_installer.cc
+++ b/chrome/browser/extensions/webstore_inline_installer.cc
@@ -138,7 +138,8 @@
 
 bool WebstoreInlineInstaller::CheckRequestorAlive() const {
   // The frame or tab may have gone away - cancel installation in that case.
-  return host_ != nullptr && web_contents() != nullptr;
+  return host_ != nullptr && web_contents() != nullptr &&
+         chrome::FindBrowserWithWebContents(web_contents()) != nullptr;
 }
 
 const GURL& WebstoreInlineInstaller::GetRequestorURL() const {
diff --git a/chrome/common/extensions/docs/templates/articles/app_bluetooth.html b/chrome/common/extensions/docs/templates/articles/app_bluetooth.html
index 76794aab..19404a1 100644
--- a/chrome/common/extensions/docs/templates/articles/app_bluetooth.html
+++ b/chrome/common/extensions/docs/templates/articles/app_bluetooth.html
@@ -12,6 +12,11 @@
   <a href="http://www.bluetooth.org">Bluetooth specifications</a>.
 </p>
 
+<p class="note">
+  <b>Note:</b>
+    With Chrome 56, users can select nearby Bluetooth Low Energy devices to provide to web sites that use the <a href="https://developers.google.com/web/updates/2015/07/interact-with-ble-devices-on-the-web">Web Bluetooth</a> API.
+</p>
+
 <h2 id="manifest">Manifest requirements</h2>
 
 <p>
diff --git a/chrome/common/extensions/docs/templates/intros/bluetooth_low_energy.html b/chrome/common/extensions/docs/templates/intros/bluetooth_low_energy.html
index e6c7150..d145ae9 100644
--- a/chrome/common/extensions/docs/templates/intros/bluetooth_low_energy.html
+++ b/chrome/common/extensions/docs/templates/intros/bluetooth_low_energy.html
@@ -4,5 +4,5 @@
 </p>
 <p class="note">
   <b>Note:</b>
-  <a href="https://developers.google.com/web/updates/2015/07/interact-with-ble-devices-on-the-web">Web Bluetooth</a> is an experimental Web API exploring access to Low Energy devices.
+    With Chrome 56, users can select nearby Bluetooth Low Energy devices to provide to web sites that use the <a href="https://developers.google.com/web/updates/2015/07/interact-with-ble-devices-on-the-web">Web Bluetooth</a> API.
 </p>
diff --git a/content/browser/service_worker/embedded_worker_test_helper.cc b/content/browser/service_worker/embedded_worker_test_helper.cc
index edaeb0de5..3c027df 100644
--- a/content/browser/service_worker/embedded_worker_test_helper.cc
+++ b/content/browser/service_worker/embedded_worker_test_helper.cc
@@ -126,6 +126,13 @@
 
   ~MockServiceWorkerEventDispatcher() override {}
 
+  void DispatchActivateEvent(
+      const DispatchActivateEventCallback& callback) override {
+    if (!helper_)
+      return;
+    helper_->OnActivateEventStub(callback);
+  }
+
   void DispatchFetchEvent(int fetch_event_id,
                           const ServiceWorkerFetchRequest& request,
                           mojom::FetchEventPreloadHandlePtr preload_handle,
@@ -319,7 +326,6 @@
   bool handled = true;
   current_embedded_worker_id_ = embedded_worker_id;
   IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerTestHelper, message)
-    IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ActivateEvent, OnActivateEventStub)
     IPC_MESSAGE_HANDLER(ServiceWorkerMsg_InstallEvent, OnInstallEventStub)
     IPC_MESSAGE_UNHANDLED(handled = false)
   IPC_END_MESSAGE_MAP()
@@ -328,11 +334,11 @@
   return handled;
 }
 
-void EmbeddedWorkerTestHelper::OnActivateEvent(int embedded_worker_id,
-                                               int request_id) {
-  SimulateSend(new ServiceWorkerHostMsg_ActivateEventFinished(
-      embedded_worker_id, request_id,
-      blink::WebServiceWorkerEventResultCompleted, base::Time::Now()));
+void EmbeddedWorkerTestHelper::OnActivateEvent(
+    const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback&
+        callback) {
+  dispatched_events()->push_back(Event::Activate);
+  callback.Run(SERVICE_WORKER_OK, base::Time::Now());
 }
 
 void EmbeddedWorkerTestHelper::OnExtendableMessageEvent(
@@ -519,11 +525,12 @@
           AsWeakPtr(), thread_id, embedded_worker_id, message));
 }
 
-void EmbeddedWorkerTestHelper::OnActivateEventStub(int request_id) {
+void EmbeddedWorkerTestHelper::OnActivateEventStub(
+    const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback&
+        callback) {
   base::ThreadTaskRunnerHandle::Get()->PostTask(
-      FROM_HERE,
-      base::Bind(&EmbeddedWorkerTestHelper::OnActivateEvent, AsWeakPtr(),
-                 current_embedded_worker_id_, request_id));
+      FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnActivateEvent,
+                            AsWeakPtr(), callback));
 }
 
 void EmbeddedWorkerTestHelper::OnExtendableMessageEventStub(
diff --git a/content/browser/service_worker/embedded_worker_test_helper.h b/content/browser/service_worker/embedded_worker_test_helper.h
index 779db77..96dacef 100644
--- a/content/browser/service_worker/embedded_worker_test_helper.h
+++ b/content/browser/service_worker/embedded_worker_test_helper.h
@@ -64,6 +64,7 @@
 class EmbeddedWorkerTestHelper : public IPC::Sender,
                                  public IPC::Listener {
  public:
+  enum class Event { Activate };
   using FetchCallback =
       base::Callback<void(ServiceWorkerStatusCode,
                           base::Time /* dispatch_event_time */)>;
@@ -125,6 +126,8 @@
   // Inner IPC sink for script context messages sent via EmbeddedWorker.
   IPC::TestSink* inner_ipc_sink() { return &inner_sink_; }
 
+  std::vector<Event>* dispatched_events() { return &events_; }
+
   std::vector<std::unique_ptr<MockEmbeddedWorkerInstanceClient>>*
   mock_instance_clients() {
     return &mock_instance_clients_;
@@ -182,7 +185,9 @@
   // OnMessageToWorker when events are sent to the embedded
   // worker. By default they just return success via
   // SimulateSendReplyToBrowser.
-  virtual void OnActivateEvent(int embedded_worker_id, int request_id);
+  virtual void OnActivateEvent(
+      const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback&
+          callback);
   virtual void OnExtendableMessageEvent(
       mojom::ExtendableMessageEventPtr event,
       const mojom::ServiceWorkerEventDispatcher::
@@ -238,7 +243,9 @@
   void OnMessageToWorkerStub(int thread_id,
                              int embedded_worker_id,
                              const IPC::Message& message);
-  void OnActivateEventStub(int request_id);
+  void OnActivateEventStub(
+      const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback&
+          callback);
   void OnExtendableMessageEventStub(
       mojom::ExtendableMessageEventPtr event,
       const mojom::ServiceWorkerEventDispatcher::
@@ -302,6 +309,8 @@
   // Updated each time MessageToWorker message is received.
   int current_embedded_worker_id_;
 
+  std::vector<Event> events_;
+
   base::WeakPtrFactory<EmbeddedWorkerTestHelper> weak_factory_;
 
   DISALLOW_COPY_AND_ASSIGN(EmbeddedWorkerTestHelper);
diff --git a/content/browser/service_worker/service_worker_browsertest.cc b/content/browser/service_worker/service_worker_browsertest.cc
index 0fe04b4..3460d4e 100644
--- a/content/browser/service_worker/service_worker_browsertest.cc
+++ b/content/browser/service_worker/service_worker_browsertest.cc
@@ -788,8 +788,8 @@
     int request_id =
         version_->StartRequest(ServiceWorkerMetrics::EventType::INSTALL,
                                CreateReceiver(BrowserThread::UI, done, result));
-    version_->DispatchSimpleEvent<ServiceWorkerHostMsg_ActivateEventFinished>(
-        request_id, ServiceWorkerMsg_ActivateEvent(request_id));
+    version_->event_dispatcher()->DispatchActivateEvent(
+        version_->CreateSimpleEventCallback(request_id));
   }
 
   void FetchOnIOThread(const base::Closure& done,
diff --git a/content/browser/service_worker/service_worker_context_unittest.cc b/content/browser/service_worker/service_worker_context_unittest.cc
index 88870e2..761edd7 100644
--- a/content/browser/service_worker/service_worker_context_unittest.cc
+++ b/content/browser/service_worker/service_worker_context_unittest.cc
@@ -97,10 +97,12 @@
  public:
   RejectActivateTestHelper() : EmbeddedWorkerTestHelper(base::FilePath()) {}
 
-  void OnActivateEvent(int embedded_worker_id, int request_id) override {
-    SimulateSend(new ServiceWorkerHostMsg_ActivateEventFinished(
-        embedded_worker_id, request_id,
-        blink::WebServiceWorkerEventResultRejected, base::Time::Now()));
+  void OnActivateEvent(
+      const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback&
+          callback) override {
+    dispatched_events()->push_back(Event::Activate);
+    callback.Run(SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED,
+                 base::Time::Now());
   }
 };
 
@@ -215,14 +217,15 @@
   base::RunLoop().RunUntilIdle();
   EXPECT_TRUE(called);
 
-  EXPECT_EQ(2UL, helper_->ipc_sink()->message_count());
+  EXPECT_EQ(1UL, helper_->ipc_sink()->message_count());
+  ASSERT_EQ(1UL, helper_->dispatched_events()->size());
   ASSERT_EQ(2UL, client->events().size());
   EXPECT_EQ(RecordableEmbeddedWorkerInstanceClient::Message::StartWorker,
             client->events()[0]);
   EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
       ServiceWorkerMsg_InstallEvent::ID));
-  EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
-      ServiceWorkerMsg_ActivateEvent::ID));
+  EXPECT_EQ(EmbeddedWorkerTestHelper::Event::Activate,
+            helper_->dispatched_events()->at(0));
   EXPECT_EQ(RecordableEmbeddedWorkerInstanceClient::Message::StopWorker,
             client->events()[1]);
 
@@ -271,13 +274,12 @@
   EXPECT_TRUE(called);
 
   EXPECT_EQ(1UL, helper_->ipc_sink()->message_count());
+  EXPECT_EQ(0UL, helper_->dispatched_events()->size());
   ASSERT_EQ(2UL, client->events().size());
   EXPECT_EQ(RecordableEmbeddedWorkerInstanceClient::Message::StartWorker,
             client->events()[0]);
   EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
       ServiceWorkerMsg_InstallEvent::ID));
-  EXPECT_FALSE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
-      ServiceWorkerMsg_ActivateEvent::ID));
   EXPECT_EQ(RecordableEmbeddedWorkerInstanceClient::Message::StopWorker,
             client->events()[1]);
 
@@ -322,14 +324,15 @@
   base::RunLoop().RunUntilIdle();
   EXPECT_TRUE(called);
 
-  EXPECT_EQ(2UL, helper_->ipc_sink()->message_count());
+  EXPECT_EQ(1UL, helper_->ipc_sink()->message_count());
+  ASSERT_EQ(1UL, helper_->dispatched_events()->size());
   ASSERT_EQ(2UL, client->events().size());
   EXPECT_EQ(RecordableEmbeddedWorkerInstanceClient::Message::StartWorker,
             client->events()[0]);
   EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
       ServiceWorkerMsg_InstallEvent::ID));
-  EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
-      ServiceWorkerMsg_ActivateEvent::ID));
+  EXPECT_EQ(EmbeddedWorkerTestHelper::Event::Activate,
+            helper_->dispatched_events()->at(0));
   EXPECT_EQ(RecordableEmbeddedWorkerInstanceClient::Message::StopWorker,
             client->events()[1]);
 
diff --git a/content/browser/service_worker/service_worker_job_unittest.cc b/content/browser/service_worker/service_worker_job_unittest.cc
index fb6924c..96c014a 100644
--- a/content/browser/service_worker/service_worker_job_unittest.cc
+++ b/content/browser/service_worker/service_worker_job_unittest.cc
@@ -106,6 +106,18 @@
   return base::Bind(&SaveUnregistrationCallback, expected_status, called);
 }
 
+ServiceWorkerStatusCode EventResultToStatus(
+    blink::WebServiceWorkerEventResult result) {
+  switch (result) {
+    case blink::WebServiceWorkerEventResultCompleted:
+      return SERVICE_WORKER_OK;
+    case blink::WebServiceWorkerEventResultRejected:
+      return SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED;
+  }
+  NOTREACHED() << "Got invalid result: " << result;
+  return SERVICE_WORKER_ERROR_FAILED;
+}
+
 }  // namespace
 
 class ServiceWorkerJobTest : public testing::Test {
@@ -1460,10 +1472,12 @@
         embedded_worker_id, request_id, install_event_result_,
         has_fetch_handler_, base::Time::Now()));
   }
-  void OnActivateEvent(int embedded_worker_id, int request_id) override {
-    SimulateSend(new ServiceWorkerHostMsg_ActivateEventFinished(
-        embedded_worker_id, request_id, activate_event_result_,
-        base::Time::Now()));
+
+  void OnActivateEvent(
+      const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback&
+          callback) override {
+    callback.Run(EventResultToStatus(activate_event_result_),
+                 base::Time::Now());
   }
 
   void set_install_callback(const base::Closure& callback) {
diff --git a/content/browser/service_worker/service_worker_registration.cc b/content/browser/service_worker/service_worker_registration.cc
index de9f481..1a06f25 100644
--- a/content/browser/service_worker/service_worker_registration.cc
+++ b/content/browser/service_worker/service_worker_registration.cc
@@ -427,9 +427,8 @@
       ServiceWorkerMetrics::EventType::ACTIVATE,
       base::Bind(&ServiceWorkerRegistration::OnActivateEventFinished, this,
                  activating_version));
-  activating_version
-      ->DispatchSimpleEvent<ServiceWorkerHostMsg_ActivateEventFinished>(
-          request_id, ServiceWorkerMsg_ActivateEvent(request_id));
+  activating_version->event_dispatcher()->DispatchActivateEvent(
+      activating_version->CreateSimpleEventCallback(request_id));
 }
 
 void ServiceWorkerRegistration::OnActivateEventFinished(
diff --git a/content/common/service_worker/service_worker_event_dispatcher.mojom b/content/common/service_worker/service_worker_event_dispatcher.mojom
index 2f0b2b6..ad8d7ebe 100644
--- a/content/common/service_worker/service_worker_event_dispatcher.mojom
+++ b/content/common/service_worker/service_worker_event_dispatcher.mojom
@@ -39,6 +39,9 @@
 // Renderer-side interface bound to ServiceWorkerContextClient for dispatching
 // events.
 interface ServiceWorkerEventDispatcher {
+  DispatchActivateEvent()
+      => (blink.mojom.ServiceWorkerEventStatus status,
+          mojo.common.mojom.Time dispatch_event_time);
   // |fetch_event_id| is used internally when sending the response back to the
   // browser process.
   DispatchFetchEvent(int32 fetch_event_id, ServiceWorkerFetchRequest request,
diff --git a/content/common/service_worker/service_worker_messages.h b/content/common/service_worker/service_worker_messages.h
index 2fd61407..9f5642f3 100644
--- a/content/common/service_worker/service_worker_messages.h
+++ b/content/common/service_worker/service_worker_messages.h
@@ -282,10 +282,6 @@
                     bool /* has_fetch_event_handler */,
                     base::Time /* dispatch_event_time */)
 
-IPC_MESSAGE_ROUTED3(ServiceWorkerHostMsg_ActivateEventFinished,
-                    int /* request_id */,
-                    blink::WebServiceWorkerEventResult,
-                    base::Time /* dispatch_event_time */)
 IPC_MESSAGE_ROUTED4(ServiceWorkerHostMsg_FetchEventResponse,
                     int /* fetch_event_id */,
                     content::ServiceWorkerFetchEventResult,
@@ -522,9 +518,6 @@
 // Sent via EmbeddedWorker to dispatch events.
 IPC_MESSAGE_CONTROL1(ServiceWorkerMsg_InstallEvent,
                      int /* request_id */)
-IPC_MESSAGE_CONTROL1(ServiceWorkerMsg_ActivateEvent,
-                     int /* request_id */)
-
 IPC_MESSAGE_CONTROL1(ServiceWorkerMsg_DidSkipWaiting,
                      int /* request_id */)
 IPC_MESSAGE_CONTROL1(ServiceWorkerMsg_DidClaimClients,
diff --git a/content/renderer/service_worker/service_worker_context_client.cc b/content/renderer/service_worker/service_worker_context_client.cc
index 60f3f77..f62c589 100644
--- a/content/renderer/service_worker/service_worker_context_client.cc
+++ b/content/renderer/service_worker/service_worker_context_client.cc
@@ -193,6 +193,8 @@
       IDMap<std::unique_ptr<blink::WebServiceWorkerClientCallbacks>>;
   using SkipWaitingCallbacksMap =
       IDMap<std::unique_ptr<blink::WebServiceWorkerSkipWaitingCallbacks>>;
+  using ActivateEventCallbacksMap =
+      IDMap<std::unique_ptr<const DispatchActivateEventCallback>>;
   using SyncEventCallbacksMap = IDMap<std::unique_ptr<const SyncCallback>>;
   using PaymentRequestEventCallbacksMap =
       IDMap<std::unique_ptr<const PaymentRequestEventCallback>>;
@@ -231,6 +233,9 @@
   // Pending callbacks for ClaimClients().
   ClaimClientsCallbacksMap claim_clients_callbacks;
 
+  // Pending callbacks for Activate Events.
+  ActivateEventCallbacksMap activate_event_callbacks;
+
   // Pending callbacks for Background Sync Events.
   SyncEventCallbacksMap sync_event_callbacks;
 
@@ -407,7 +412,6 @@
   CHECK_EQ(embedded_worker_id_, embedded_worker_id);
   bool handled = true;
   IPC_BEGIN_MESSAGE_MAP(ServiceWorkerContextClient, message)
-    IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ActivateEvent, OnActivateEvent)
     IPC_MESSAGE_HANDLER(ServiceWorkerMsg_InstallEvent, OnInstallEvent)
     IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetClient, OnDidGetClient)
     IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetClients, OnDidGetClients)
@@ -571,6 +575,7 @@
   proxy_ = NULL;
 
   // Aborts all the pending events callbacks.
+  AbortPendingEventCallbacks(context_->activate_event_callbacks);
   AbortPendingEventCallbacks(context_->sync_event_callbacks);
   AbortPendingEventCallbacks(context_->notification_click_event_callbacks);
   AbortPendingEventCallbacks(context_->notification_close_event_callbacks);
@@ -664,9 +669,12 @@
     int request_id,
     blink::WebServiceWorkerEventResult result,
     double event_dispatch_time) {
-  Send(new ServiceWorkerHostMsg_ActivateEventFinished(
-      GetRoutingID(), request_id, result,
-      base::Time::FromDoubleT(event_dispatch_time)));
+  const DispatchActivateEventCallback* callback =
+      context_->activate_event_callbacks.Lookup(request_id);
+  DCHECK(callback);
+  callback->Run(EventResultToStatus(result),
+                base::Time::FromDoubleT(event_dispatch_time));
+  context_->activate_event_callbacks.Remove(request_id);
 }
 
 void ServiceWorkerContextClient::didHandleExtendableMessageEvent(
@@ -933,9 +941,12 @@
       WebServiceWorkerRegistrationImpl::CreateHandle(registration));
 }
 
-void ServiceWorkerContextClient::OnActivateEvent(int request_id) {
+void ServiceWorkerContextClient::DispatchActivateEvent(
+    const DispatchActivateEventCallback& callback) {
   TRACE_EVENT0("ServiceWorker",
-               "ServiceWorkerContextClient::OnActivateEvent");
+               "ServiceWorkerContextClient::DispatchActivateEvent");
+  int request_id = context_->activate_event_callbacks.Add(
+      base::MakeUnique<DispatchActivateEventCallback>(callback));
   proxy_->dispatchActivateEvent(request_id);
 }
 
diff --git a/content/renderer/service_worker/service_worker_context_client.h b/content/renderer/service_worker/service_worker_context_client.h
index 3b1868e..1798c6d 100644
--- a/content/renderer/service_worker/service_worker_context_client.h
+++ b/content/renderer/service_worker/service_worker_context_client.h
@@ -212,6 +212,8 @@
       const ServiceWorkerVersionAttributes& attrs);
 
   // mojom::ServiceWorkerEventDispatcher
+  void DispatchActivateEvent(
+      const DispatchActivateEventCallback& callback) override;
   void DispatchExtendableMessageEvent(
       mojom::ExtendableMessageEventPtr event,
       const DispatchExtendableMessageEventCallback& callback) override;
@@ -239,7 +241,6 @@
       payments::mojom::PaymentAppRequestPtr app_request,
       const DispatchPaymentRequestEventCallback& callback) override;
 
-  void OnActivateEvent(int request_id);
   void OnInstallEvent(int request_id);
   void OnNotificationClickEvent(
       int request_id,
diff --git a/device/bluetooth/bluez/OWNERS b/device/bluetooth/bluez/OWNERS
index 3ed331b..826e314 100644
--- a/device/bluetooth/bluez/OWNERS
+++ b/device/bluetooth/bluez/OWNERS
@@ -1 +1,2 @@
 steel@chromium.org
+mcchou@chromium.org
diff --git a/device/bluetooth/dbus/OWNERS b/device/bluetooth/dbus/OWNERS
index 3ed331b..826e314 100644
--- a/device/bluetooth/dbus/OWNERS
+++ b/device/bluetooth/dbus/OWNERS
@@ -1 +1,2 @@
 steel@chromium.org
+mcchou@chromium.org
diff --git a/third_party/WebKit/Source/devtools/scripts/npm_test.js b/third_party/WebKit/Source/devtools/scripts/npm_test.js
index 096d65fc..1a60ad5 100644
--- a/third_party/WebKit/Source/devtools/scripts/npm_test.js
+++ b/third_party/WebKit/Source/devtools/scripts/npm_test.js
@@ -145,14 +145,10 @@
 
 function getPlatform() {
   if (process.platform === 'linux') {
-    if (process.arch === 'x64')
-      return 'Linux_x64';
-    throw new Error('Pre-compiled content shells are only available for x64 on Linux');
+    return 'Linux_x64';
   }
   if (process.platform === 'win32') {
-    if (process.arch === 'x64')
-      return 'Win_x64';
-    return 'Win';
+    return 'Win_x64';
   }
   if (process.platform === 'darwin')
     return 'Mac';