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 CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_REGISTER_JOB_BASE_H_
6#define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_REGISTER_JOB_BASE_H_
7
8namespace content {
9
10class ServiceWorkerRegisterJobBase {
11 public:
12  enum RegistrationJobType {
13    REGISTRATION_JOB,
14    UNREGISTRATION_JOB,
15    UPDATE_JOB
16  };
17
18  virtual ~ServiceWorkerRegisterJobBase() {}
19
20  // Starts the job. This method should be called once and only once per job.
21  virtual void Start() = 0;
22
23  // Aborts the job. This method should be called once and only once per job.
24  // It can be called regardless of whether Start() was called.
25  virtual void Abort() = 0;
26
27  // Returns true if this job is identical to |job| for the purpose of
28  // collapsing them together in a ServiceWorkerJobCoordinator queue.
29  // Registration jobs are equal if they are for the same pattern and script
30  // URL; unregistration jobs are equal if they are for the same pattern.
31  virtual bool Equals(ServiceWorkerRegisterJobBase* job) = 0;
32
33  // Returns the type of this job.
34  virtual RegistrationJobType GetType() = 0;
35};
36
37}  // namespace content
38
39#endif  // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_REGISTER_JOB_BASE_H_
40