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';