blob: 8a491c15e9e7761b7cfbab01e4928b56dcb5a101 [file] [log] [blame]
// Copyright 2018 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 THIRD_PARTY_BLINK_RENDERER_MODULES_BACKGROUND_FETCH_BACKGROUND_FETCH_UPDATE_UI_EVENT_H_
#define THIRD_PARTY_BLINK_RENDERER_MODULES_BACKGROUND_FETCH_BACKGROUND_FETCH_UPDATE_UI_EVENT_H_
#include "third_party/blink/public/mojom/background_fetch/background_fetch.mojom-blink-forward.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
#include "third_party/blink/renderer/modules/background_fetch/background_fetch_event.h"
#include "third_party/blink/renderer/modules/service_worker/service_worker_registration.h"
#include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
#include "third_party/blink/renderer/platform/wtf/text/atomic_string.h"
#include "third_party/skia/include/core/SkBitmap.h"
namespace blink {
class BackgroundFetchEvent;
class BackgroundFetchIconLoader;
class BackgroundFetchUIOptions;
class ScriptPromiseResolver;
class WaitUntilObserver;
// Event for interacting with fetch requests that have completed.
class MODULES_EXPORT BackgroundFetchUpdateUIEvent final
: public BackgroundFetchEvent {
DEFINE_WRAPPERTYPEINFO();
public:
static BackgroundFetchUpdateUIEvent* Create(
const AtomicString& type,
const BackgroundFetchEventInit* initializer) {
return MakeGarbageCollected<BackgroundFetchUpdateUIEvent>(type,
initializer);
}
static BackgroundFetchUpdateUIEvent* Create(
const AtomicString& type,
const BackgroundFetchEventInit* initializer,
WaitUntilObserver* observer,
ServiceWorkerRegistration* registration) {
return MakeGarbageCollected<BackgroundFetchUpdateUIEvent>(
type, initializer, observer, registration);
}
BackgroundFetchUpdateUIEvent(const AtomicString& type,
const BackgroundFetchEventInit* initializer);
BackgroundFetchUpdateUIEvent(const AtomicString& type,
const BackgroundFetchEventInit* init,
WaitUntilObserver* observer,
ServiceWorkerRegistration* registration);
~BackgroundFetchUpdateUIEvent() override;
// Web Exposed method defined in the IDL file.
ScriptPromise updateUI(ScriptState* script_state,
const BackgroundFetchUIOptions* ui_options);
void Trace(blink::Visitor* visitor) override;
private:
void DidGetIcon(ScriptPromiseResolver* resolver,
const String& title,
const SkBitmap& icon,
int64_t ideal_to_chosen_icon_size);
void DidUpdateUI(ScriptPromiseResolver* resolver,
mojom::blink::BackgroundFetchError error);
bool update_ui_called_ = false;
Member<ServiceWorkerRegistration> service_worker_registration_;
Member<BackgroundFetchIconLoader> loader_;
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_BACKGROUND_FETCH_BACKGROUND_FETCH_UPDATE_UI_EVENT_H_