Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(614)

Unified Diff: content/browser/navigator_connect/navigator_connect_context.cc

Issue 861373002: Refactor navigator.connect code to make it more flexible. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix typo Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/navigator_connect/navigator_connect_context.cc
diff --git a/content/browser/navigator_connect/navigator_connect_context.cc b/content/browser/navigator_connect/navigator_connect_context.cc
deleted file mode 100644
index 45d6a6f6cf74f17072ed984b4038c4d921e8f806..0000000000000000000000000000000000000000
--- a/content/browser/navigator_connect/navigator_connect_context.cc
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/browser/navigator_connect/navigator_connect_context.h"
-
-#include "content/browser/message_port_service.h"
-#include "content/browser/service_worker/service_worker_context_wrapper.h"
-#include "content/browser/service_worker/service_worker_utils.h"
-#include "content/common/navigator_connect_types.h"
-
-namespace content {
-
-struct NavigatorConnectContext::Connection {
- CrossOriginServiceWorkerClient client;
- int64 service_worker_registration_id;
- GURL service_worker_registration_origin;
-};
-
-NavigatorConnectContext::NavigatorConnectContext(
- const scoped_refptr<ServiceWorkerContextWrapper>& service_worker_context)
- : service_worker_context_(service_worker_context) {
-}
-
-NavigatorConnectContext::~NavigatorConnectContext() {
-}
-
-void NavigatorConnectContext::RegisterConnection(
- const CrossOriginServiceWorkerClient& client,
- const scoped_refptr<ServiceWorkerRegistration>&
- service_worker_registration) {
- MessagePortService::GetInstance()->UpdateMessagePort(
- client.message_port_id, this, client.message_port_id);
- MessagePortService::GetInstance()->ReleaseMessages(client.message_port_id);
- Connection& connection = connections_[client.message_port_id];
- connection.client = client;
- connection.service_worker_registration_id = service_worker_registration->id();
- connection.service_worker_registration_origin =
- service_worker_registration->pattern().GetOrigin();
-}
-
-void NavigatorConnectContext::SendMessage(
- int route_id,
- const base::string16& message,
- const std::vector<int>& sent_message_port_ids) {
- DCHECK(connections_.find(route_id) != connections_.end());
- const Connection& connection = connections_[route_id];
-
- // Hold messages while service worker is found, activated, and message sent
- // causing ServiceWorkerScriptContext::OnCrossOriginMessageToWorker to
- // construct WebMessagePortChannelImpl instances which send
- // MessagePortHostMsg_ReleaseMessages.
- for (int sent_message_port_id : sent_message_port_ids)
- MessagePortService::GetInstance()->HoldMessages(sent_message_port_id);
-
- service_worker_context_->context()->storage()->FindRegistrationForId(
- connection.service_worker_registration_id,
- connection.service_worker_registration_origin,
- base::Bind(&NavigatorConnectContext::DoSendMessage, this,
- connection.client, message, sent_message_port_ids));
-}
-
-void NavigatorConnectContext::SendMessagesAreQueued(int route_id) {
- NOTREACHED() << "navigator.connect endpoints should never queue messages.";
-}
-
-void NavigatorConnectContext::DoSendMessage(
- const CrossOriginServiceWorkerClient& client,
- const base::string16& message,
- const std::vector<int>& sent_message_port_ids,
- ServiceWorkerStatusCode service_worker_status,
- const scoped_refptr<ServiceWorkerRegistration>&
- service_worker_registration) {
- if (service_worker_status != SERVICE_WORKER_OK) {
- // TODO(mek): Do something when no service worker was found.
- return;
- }
-
- ServiceWorkerVersion* active_version =
- service_worker_registration->active_version();
- if (!active_version) {
- // TODO(mek): Do something when no active version exists.
- return;
- }
-
- active_version->DispatchCrossOriginMessageEvent(
- client, message, sent_message_port_ids,
- base::Bind(&ServiceWorkerUtils::NoOpStatusCallback));
-}
-
-} // namespace content

Powered by Google App Engine
This is Rietveld 408576698