Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(835)

Unified Diff: third_party/WebKit/Source/modules/background_fetch/BackgroundFetchManager.cpp

Issue 2745543002: Implement BackgroundFetchManager::{get, fetch}() (Closed)
Patch Set: more webexposed tests Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/background_fetch/BackgroundFetchManager.cpp
diff --git a/third_party/WebKit/Source/modules/background_fetch/BackgroundFetchManager.cpp b/third_party/WebKit/Source/modules/background_fetch/BackgroundFetchManager.cpp
index 27fabfcdbbd5b3b78f5878719ee0298e3428d57f..a1339f50c9bf2c09e144a890e6488f00270952ba 100644
--- a/third_party/WebKit/Source/modules/background_fetch/BackgroundFetchManager.cpp
+++ b/third_party/WebKit/Source/modules/background_fetch/BackgroundFetchManager.cpp
@@ -4,8 +4,11 @@
#include "modules/background_fetch/BackgroundFetchManager.h"
+#include "bindings/core/v8/ScriptPromiseResolver.h"
#include "bindings/core/v8/ScriptState.h"
-#include "core/dom/DOMException.h"
+#include "bindings/core/v8/V8ThrowException.h"
+#include "modules/background_fetch/BackgroundFetchOptions.h"
+#include "modules/background_fetch/BackgroundFetchRegistration.h"
#include "modules/serviceworkers/ServiceWorkerRegistration.h"
namespace blink {
@@ -16,10 +19,70 @@ BackgroundFetchManager::BackgroundFetchManager(
DCHECK(registration);
}
+ScriptPromise BackgroundFetchManager::fetch(
+ ScriptState* scriptState,
+ String tag,
+ HeapVector<RequestOrUSVString> requests,
+ const BackgroundFetchOptions& options) {
+ if (!m_registration->active()) {
+ return ScriptPromise::reject(
+ scriptState,
+ V8ThrowException::createTypeError(scriptState->isolate(),
+ "No active registration available on "
+ "the ServiceWorkerRegistration."));
+ }
+
+ ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
+ ScriptPromise promise = resolver->promise();
+
+ // TODO(peter): Register the fetch() with the browser process. The reject
+ // cases there are storage errors and duplicated registrations for the `tag`
+ // given the `m_registration`.
+ BackgroundFetchRegistration* registration = new BackgroundFetchRegistration(
+ m_registration.get(), tag, options.icons(), options.totalDownloadSize(),
+ options.title());
+
+ resolver->resolve(registration);
+
+ return promise;
+}
+
+ScriptPromise BackgroundFetchManager::get(ScriptState* scriptState,
+ String tag) {
+ if (!m_registration->active()) {
+ return ScriptPromise::reject(
+ scriptState,
+ V8ThrowException::createTypeError(scriptState->isolate(),
+ "No active registration available on "
+ "the ServiceWorkerRegistration."));
+ }
+
+ ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
+ ScriptPromise promise = resolver->promise();
+
+ // TODO(peter): Get the background fetch registration for `tag` from the
+ // browser process. There may not be one.
+ resolver->resolve(v8::Null(scriptState->isolate()));
+
+ return promise;
+}
+
ScriptPromise BackgroundFetchManager::getTags(ScriptState* scriptState) {
- return ScriptPromise::rejectWithDOMException(
- scriptState,
- DOMException::create(NotSupportedError, "Not implemented yet."));
+ if (!m_registration->active()) {
+ return ScriptPromise::reject(
+ scriptState,
+ V8ThrowException::createTypeError(scriptState->isolate(),
+ "No active registration available on "
+ "the ServiceWorkerRegistration."));
+ }
+
+ ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
+ ScriptPromise promise = resolver->promise();
+
+ // TODO(peter): Get a list of tags from the browser process.
+ resolver->resolve(Vector<String>());
+
+ return promise;
}
DEFINE_TRACE(BackgroundFetchManager) {

Powered by Google App Engine
This is Rietveld 408576698