blob: cbfbdd31ab6b5b1a8f7498b1f1b7f5dfbdbcff14 [file] [log] [blame]
// Copyright 2017 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 BackgroundFetchManager_h
#define BackgroundFetchManager_h
#include "bindings/core/v8/ScriptPromise.h"
#include "modules/ModulesExport.h"
#include "platform/bindings/ScriptWrappable.h"
#include "platform/heap/GarbageCollected.h"
#include "platform/heap/Handle.h"
#include "public/platform/modules/background_fetch/background_fetch.mojom-blink.h"
namespace blink {
class BackgroundFetchBridge;
class BackgroundFetchOptions;
class BackgroundFetchRegistration;
class ExceptionState;
class RequestOrUSVStringOrRequestOrUSVStringSequence;
class ScriptPromiseResolver;
class ScriptState;
class ServiceWorkerRegistration;
class WebServiceWorkerRequest;
// Implementation of the BackgroundFetchManager JavaScript object, accessible
// by developers through ServiceWorkerRegistration.backgroundFetch.
class MODULES_EXPORT BackgroundFetchManager final
: public GarbageCollected<BackgroundFetchManager>,
public ScriptWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
static BackgroundFetchManager* Create(
ServiceWorkerRegistration* registration) {
return new BackgroundFetchManager(registration);
}
// Web Exposed methods defined in the IDL file.
ScriptPromise fetch(
ScriptState*,
const String& tag,
const RequestOrUSVStringOrRequestOrUSVStringSequence& requests,
const BackgroundFetchOptions&,
ExceptionState&);
ScriptPromise get(ScriptState*, const String& tag);
ScriptPromise getTags(ScriptState*);
DECLARE_TRACE();
private:
friend class BackgroundFetchManagerTest;
explicit BackgroundFetchManager(ServiceWorkerRegistration*);
// Creates a vector of WebServiceWorkerRequest objects for the given set of
// |requests|, which can be either Request objects or URL strings.
static Vector<WebServiceWorkerRequest> CreateWebRequestVector(
ScriptState*,
const RequestOrUSVStringOrRequestOrUSVStringSequence& requests,
ExceptionState&);
void DidFetch(ScriptPromiseResolver*,
mojom::blink::BackgroundFetchError,
BackgroundFetchRegistration*);
void DidGetRegistration(ScriptPromiseResolver*,
mojom::blink::BackgroundFetchError,
BackgroundFetchRegistration*);
void DidGetTags(ScriptPromiseResolver*,
mojom::blink::BackgroundFetchError,
const Vector<String>& tags);
Member<ServiceWorkerRegistration> registration_;
Member<BackgroundFetchBridge> bridge_;
};
} // namespace blink
#endif // BackgroundFetchManager_h