1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef WebServiceWorkerProxy_h
6#define WebServiceWorkerProxy_h
7
8#include "WebCommon.h"
9
10namespace blink {
11
12class ServiceWorker;
13
14// A proxy interface, passed via WebServiceWorker.setProxy() from blink to
15// the embedder, to talk to the ServiceWorker object from embedder.
16class WebServiceWorkerProxy {
17public:
18    WebServiceWorkerProxy() : m_private(0) { }
19    virtual ~WebServiceWorkerProxy() { }
20
21    // Returns true if the proxy is ready to be notified of service worker state
22    // changes. It may not be if it's waiting for the registration promise to
23    // resolve, while the browser side has registered and is proceeding to
24    // install and activate the worker.
25    virtual bool isReady() = 0;
26
27    // Notifies the proxy that the service worker state changed. The new state
28    // should be accessible via WebServiceWorker.state().
29    virtual void dispatchStateChangeEvent() = 0;
30
31#if INSIDE_BLINK
32    BLINK_PLATFORM_EXPORT WebServiceWorkerProxy(ServiceWorker*);
33    BLINK_PLATFORM_EXPORT ServiceWorker* unwrap() const;
34#endif
35
36protected:
37    ServiceWorker* m_private;
38};
39
40} // namespace blink
41
42#endif // WebServiceWorkerProxy_h
43