dom/serviceworkers/RemoteServiceWorkerRegistrationImpl.h
author André Bargull <andre.bargull@gmail.com>
Fri, 17 Aug 2018 14:30:37 -0700
changeset 432230 fd8d17192696250a5396894301478f36c6c75be7
parent 425714 400b387177fd0bb501703f47cef5122d3f49fbc9
child 448874 6b447ab87004213505fbdcb0d2538a2634550737
permissions -rw-r--r--
Bug 1346211 - Part 7: Clobber after modifying ICU data file. r=clobber

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef mozilla_dom_remoteserviceworkerregistrationimpl_h__
#define mozilla_dom_remoteserviceworkerregistrationimpl_h__

#include "ServiceWorkerRegistration.h"

namespace mozilla {
namespace dom {

class ServiceWorkerRegistrationChild;

class RemoteServiceWorkerRegistrationImpl final : public ServiceWorkerRegistration::Inner
{
  ServiceWorkerRegistrationChild* mActor;
  ServiceWorkerRegistration* mOuter;
  bool mShutdown;

  ~RemoteServiceWorkerRegistrationImpl();

  void
  Shutdown();

  // ServiceWorkerRegistration::Inner implementation
  void
  SetServiceWorkerRegistration(ServiceWorkerRegistration* aReg) override;

  void
  ClearServiceWorkerRegistration(ServiceWorkerRegistration* aReg) override;

  void
  Update(ServiceWorkerRegistrationCallback&& aSuccessCB,
         ServiceWorkerFailureCallback&& aFailureCB) override;

  void
  Unregister(ServiceWorkerBoolCallback&& aSuccessCB,
             ServiceWorkerFailureCallback&& aFailureCB) override;

public:
  explicit RemoteServiceWorkerRegistrationImpl(const ServiceWorkerRegistrationDescriptor& aDescriptor);

  void
  RevokeActor(ServiceWorkerRegistrationChild* aActor);

  void
  UpdateState(const ServiceWorkerRegistrationDescriptor& aDescriptor);

  NS_INLINE_DECL_REFCOUNTING(RemoteServiceWorkerRegistrationImpl, override)
};

} // namespace dom
} // namespace mozilla

#endif // mozilla_dom_remoteserviceworkerregistrationimpl_h__