Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / content / renderer / service_worker / service_worker_script_context.h
index 7bea6bf..a528d34 100644 (file)
@@ -8,9 +8,12 @@
 #include <vector>
 
 #include "base/basictypes.h"
+#include "base/id_map.h"
 #include "base/strings/string16.h"
-
+#include "content/child/webmessageportchannel_impl.h"
 #include "content/common/service_worker/service_worker_types.h"
+#include "third_party/WebKit/public/platform/WebServiceWorkerClientsInfo.h"
+#include "third_party/WebKit/public/platform/WebServiceWorkerEventResult.h"
 
 namespace blink {
 class WebServiceWorkerContextProxy;
@@ -35,22 +38,42 @@ class ServiceWorkerScriptContext {
       blink::WebServiceWorkerContextProxy* proxy);
   ~ServiceWorkerScriptContext();
 
-  void OnMessageReceived(int request_id, const IPC::Message& message);
+  void OnMessageReceived(const IPC::Message& message);
 
-  void DidHandleInstallEvent(int request_id);
+  void DidHandleActivateEvent(int request_id,
+                              blink::WebServiceWorkerEventResult);
+  void DidHandleInstallEvent(int request_id,
+                             blink::WebServiceWorkerEventResult result);
   void DidHandleFetchEvent(int request_id,
                            ServiceWorkerFetchEventResult result,
                            const ServiceWorkerResponse& response);
+  void DidHandleSyncEvent(int request_id);
+  void GetClientDocuments(
+      blink::WebServiceWorkerClientsCallbacks* callbacks);
+  void PostMessageToDocument(int client_id,
+                             const base::string16& message,
+                             const std::vector<int>& message_port_ids);
 
  private:
-  // Send message back to the browser.
-  void Send(int request_id, const IPC::Message& message);
+  typedef IDMap<blink::WebServiceWorkerClientsCallbacks, IDMapOwnPointer>
+      ClientsCallbacksMap;
+
+  // Send a message to the browser.
+  void Send(IPC::Message* message);
 
-  void OnInstallEvent(int active_version_embedded_worker_id);
-  void OnFetchEvent(const ServiceWorkerFetchRequest& request);
+  void OnActivateEvent(int request_id);
+  void OnInstallEvent(int request_id, int active_version_id);
+  void OnFetchEvent(int request_id, const ServiceWorkerFetchRequest& request);
+  void OnSyncEvent(int request_id);
   void OnPostMessage(const base::string16& message,
                      const std::vector<int>& sent_message_port_ids,
                      const std::vector<int>& new_routing_ids);
+  void OnDidGetClientDocuments(
+      int request_id, const std::vector<int>& client_ids);
+
+  // Get routing_id for sending message to the ServiceWorkerVersion
+  // in the browser process.
+  int GetRoutingID() const;
 
   // Not owned; embedded_context_ owns this.
   EmbeddedWorkerContextClient* embedded_context_;
@@ -63,6 +86,9 @@ class ServiceWorkerScriptContext {
   // response.
   int current_request_id_;
 
+  // Pending callbacks for GetClientDocuments().
+  ClientsCallbacksMap pending_clients_callbacks_;
+
   DISALLOW_COPY_AND_ASSIGN(ServiceWorkerScriptContext);
 };