#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;
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_;
// response.
int current_request_id_;
+ // Pending callbacks for GetClientDocuments().
+ ClientsCallbacksMap pending_clients_callbacks_;
+
DISALLOW_COPY_AND_ASSIGN(ServiceWorkerScriptContext);
};