summaryrefslogtreecommitdiffstats
path: root/chromium/content/browser/service_worker/service_worker_fetch_dispatcher.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/service_worker/service_worker_fetch_dispatcher.h')
-rw-r--r--chromium/content/browser/service_worker/service_worker_fetch_dispatcher.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/chromium/content/browser/service_worker/service_worker_fetch_dispatcher.h b/chromium/content/browser/service_worker/service_worker_fetch_dispatcher.h
new file mode 100644
index 00000000000..9e595ab0870
--- /dev/null
+++ b/chromium/content/browser/service_worker/service_worker_fetch_dispatcher.h
@@ -0,0 +1,57 @@
+// Copyright 2014 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 CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_FETCH_DISPATCHER_H_
+#define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_FETCH_DISPATCHER_H_
+
+#include "base/basictypes.h"
+#include "base/callback.h"
+#include "base/memory/weak_ptr.h"
+#include "content/common/service_worker/service_worker_status_code.h"
+#include "content/common/service_worker/service_worker_types.h"
+
+namespace net {
+class URLRequest;
+}
+
+namespace content {
+
+class ServiceWorkerVersion;
+
+// A helper class to dispatch fetch event to a service worker.
+class ServiceWorkerFetchDispatcher {
+ public:
+ typedef base::Callback<void(ServiceWorkerStatusCode,
+ ServiceWorkerFetchEventResult,
+ const ServiceWorkerResponse&)> FetchCallback;
+
+ ServiceWorkerFetchDispatcher(
+ net::URLRequest* request,
+ ServiceWorkerVersion* version,
+ const FetchCallback& callback);
+ ~ServiceWorkerFetchDispatcher();
+
+ // Dispatches a fetch event to the |version| given in ctor, and fires
+ // |callback| (also given in ctor) when finishes.
+ void Run();
+
+ private:
+ void DidWaitActivation();
+ void DidFailActivation();
+ void DispatchFetchEvent();
+ void DidFinish(ServiceWorkerStatusCode status,
+ ServiceWorkerFetchEventResult fetch_result,
+ const ServiceWorkerResponse& response);
+
+ scoped_refptr<ServiceWorkerVersion> version_;
+ FetchCallback callback_;
+ ServiceWorkerFetchRequest request_;
+ base::WeakPtrFactory<ServiceWorkerFetchDispatcher> weak_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(ServiceWorkerFetchDispatcher);
+};
+
+} // namespace content
+
+#endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_FETCH_DISPATCHER_H_