| Index: content/browser/navigator_connect/navigator_connect_service_worker_service_factory.h | 
| diff --git a/content/browser/navigator_connect/navigator_connect_dispatcher_host.h b/content/browser/navigator_connect/navigator_connect_service_worker_service_factory.h | 
| similarity index 35% | 
| copy from content/browser/navigator_connect/navigator_connect_dispatcher_host.h | 
| copy to content/browser/navigator_connect/navigator_connect_service_worker_service_factory.h | 
| index 86350a7d5f744d5d9f7662489938c6b31919fcf3..4e0239f8c4df9fba0e3b97625c28d9490961aab0 100644 | 
| --- a/content/browser/navigator_connect/navigator_connect_dispatcher_host.h | 
| +++ b/content/browser/navigator_connect/navigator_connect_service_worker_service_factory.h | 
| @@ -1,72 +1,61 @@ | 
| -// Copyright 2014 The Chromium Authors. All rights reserved. | 
| +// Copyright 2015 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. | 
|  | 
| -#ifndef CONTENT_BROWSER_NAVIGATOR_CONNECT_NAVIGATOR_CONNECT_DISPATCHER_HOST_H_ | 
| -#define CONTENT_BROWSER_NAVIGATOR_CONNECT_NAVIGATOR_CONNECT_DISPATCHER_HOST_H_ | 
| +#ifndef CONTENT_BROWSER_NAVIGATOR_CONNECT_NAVIGATOR_CONNECT_SERVICE_WORKER_SERVICE_FACTORY_H_ | 
| +#define CONTENT_BROWSER_NAVIGATOR_CONNECT_NAVIGATOR_CONNECT_SERVICE_WORKER_SERVICE_FACTORY_H_ | 
|  | 
| -#include "content/common/service_worker/service_worker_status_code.h" | 
| -#include "content/public/browser/browser_message_filter.h" | 
| +#include <map> | 
|  | 
| -class GURL; | 
| +#include "base/memory/weak_ptr.h" | 
| +#include "content/common/service_worker/service_worker_status_code.h" | 
| +#include "content/public/browser/navigator_connect_service_factory.h" | 
|  | 
| namespace content { | 
|  | 
| -struct CrossOriginServiceWorkerClient; | 
| -class NavigatorConnectContext; | 
| class ServiceWorkerContextWrapper; | 
| class ServiceWorkerRegistration; | 
|  | 
| -// Receives navigator.connect connection attempts from a child process. | 
| -// Attempts to find a service that serves the URL the connection is made to | 
| -// and sets up the actual connection. | 
| -// Constructed on the UI thread, but all other methods are called on the IO | 
| -// thread. Typically there is one instance of this class for each renderer | 
| -// process, and this class lives at least as long as the renderer process is | 
| -// alive (since this class is refcounted it could outlive the renderer process | 
| -// if it is still handling a connection attempt). | 
| -class NavigatorConnectDispatcherHost : public BrowserMessageFilter { | 
| +// Service worker specific NavigatorConnectServiceFactory implementation. This | 
| +// class accepts all URLs (and thus has to be the first factory to be added to | 
| +// NavigatorConnectContext or no other factories will ever by used). | 
| +// Tries to find a service worker registration to handle the url being connected | 
| +// to. | 
| +class NavigatorConnectServiceWorkerServiceFactory | 
| +    : public NavigatorConnectServiceFactory { | 
| public: | 
| -  NavigatorConnectDispatcherHost( | 
| -      const scoped_refptr<ServiceWorkerContextWrapper>& service_worker_context, | 
| -      const scoped_refptr<NavigatorConnectContext>& navigator_connect_context); | 
| - | 
| - private: | 
| -  ~NavigatorConnectDispatcherHost() override; | 
| +  explicit NavigatorConnectServiceWorkerServiceFactory( | 
| +      const scoped_refptr<ServiceWorkerContextWrapper>& service_worker_context); | 
| +  ~NavigatorConnectServiceWorkerServiceFactory() override; | 
|  | 
| -  // BrowserMessageFilter implementation. | 
| -  bool OnMessageReceived(const IPC::Message& message) override; | 
| - | 
| -  // IPC Message handlers. | 
| -  void OnConnect(int thread_id, | 
| -                 int request_id, | 
| -                 const CrossOriginServiceWorkerClient& client); | 
| +  // NavigatorConnectServiceFactory implementation. | 
| +  bool HandlesUrl(const GURL& target_url) override; | 
| +  void Connect(const NavigatorConnectClient& client, | 
| +               const ConnectCallback& callback) override; | 
|  | 
| + private: | 
| // Callback called when the Service Worker context found (or didn't find) a | 
| // service worker registration to serve a particular URL. | 
| void GotServiceWorkerRegistration( | 
| -      int thread_id, | 
| -      int request_id, | 
| -      const CrossOriginServiceWorkerClient& client, | 
| +      const ConnectCallback& callback, | 
| +      const NavigatorConnectClient& client, | 
| ServiceWorkerStatusCode status, | 
| const scoped_refptr<ServiceWorkerRegistration>& registration); | 
|  | 
| // Callback called when the service worker finished handling the cross origin | 
| // connection event. | 
| void OnConnectResult( | 
| -      int thread_id, | 
| -      int request_id, | 
| -      const CrossOriginServiceWorkerClient& client, | 
| +      const ConnectCallback& callback, | 
| +      const NavigatorConnectClient& client, | 
| const scoped_refptr<ServiceWorkerRegistration>& registration, | 
| ServiceWorkerStatusCode status, | 
| bool accept_connection); | 
|  | 
| scoped_refptr<ServiceWorkerContextWrapper> service_worker_context_; | 
| -  scoped_refptr<NavigatorConnectContext> navigator_connect_context_; | 
| - | 
| -  DISALLOW_COPY_AND_ASSIGN(NavigatorConnectDispatcherHost); | 
| +  base::WeakPtrFactory<NavigatorConnectServiceWorkerServiceFactory> | 
| +      weak_factory_; | 
| }; | 
|  | 
| }  // namespace content | 
|  | 
| -#endif  // CONTENT_BROWSER_NAVIGATOR_CONNECT_NAVIGATOR_CONNECT_DISPATCHER_HOST_H_ | 
| +#endif  // CONTENT_BROWSER_NAVIGATOR_CONNECT_NAVIGATOR_CONNECT_SERVICE_WORKER_SERVICE_FACTORY_H_ | 
|  |