summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornhiroki <nhiroki@chromium.org>2014-10-28 21:02:47 -0700
committerCommit bot <commit-bot@chromium.org>2014-10-29 04:03:17 +0000
commitfebadeedcd8bf2339a2718b4fbeaaab35cf1fce9 (patch)
tree753427e1e99abf1147a1d96e263099349439aa1b
parent72c5a2a0d6729802a43a114700d259f69fb1dc2e (diff)
downloadchromium_src-febadeedcd8bf2339a2718b4fbeaaab35cf1fce9.zip
chromium_src-febadeedcd8bf2339a2718b4fbeaaab35cf1fce9.tar.gz
chromium_src-febadeedcd8bf2339a2718b4fbeaaab35cf1fce9.tar.bz2
ServiceWorker: Make a way to retrieve a service worker version id (Chromium)
This is used to make a key of MemoryCache: https://codereview.chromium.org/640463003/ Blink-side: https://codereview.chromium.org/650033007/ BUG=423219 TEST=n/a Review URL: https://codereview.chromium.org/669303003 Cr-Commit-Position: refs/heads/master@{#301782}
-rw-r--r--content/browser/service_worker/service_worker_handle.cc1
-rw-r--r--content/child/service_worker/service_worker_handle_reference.h1
-rw-r--r--content/common/service_worker/service_worker_messages.h1
-rw-r--r--content/common/service_worker/service_worker_types.cc3
-rw-r--r--content/common/service_worker/service_worker_types.h1
-rw-r--r--content/renderer/render_frame_impl.cc11
-rw-r--r--content/renderer/render_frame_impl.h3
7 files changed, 19 insertions, 2 deletions
diff --git a/content/browser/service_worker/service_worker_handle.cc b/content/browser/service_worker/service_worker_handle.cc
index 5ab7687..f39904e 100644
--- a/content/browser/service_worker/service_worker_handle.cc
+++ b/content/browser/service_worker/service_worker_handle.cc
@@ -109,6 +109,7 @@ ServiceWorkerObjectInfo ServiceWorkerHandle::GetObjectInfo() {
info.scope = registration_->pattern();
info.url = version_->script_url();
info.state = GetWebServiceWorkerState(version_.get());
+ info.version_id = version_->version_id();
return info;
}
diff --git a/content/child/service_worker/service_worker_handle_reference.h b/content/child/service_worker/service_worker_handle_reference.h
index 0393e55..d70d665 100644
--- a/content/child/service_worker/service_worker_handle_reference.h
+++ b/content/child/service_worker/service_worker_handle_reference.h
@@ -39,6 +39,7 @@ class ServiceWorkerHandleReference {
const GURL& url() const { return info_.url; }
blink::WebServiceWorkerState state() const { return info_.state; }
void set_state(blink::WebServiceWorkerState state) { info_.state = state; }
+ int64 version_id() const { return info_.version_id; }
private:
ServiceWorkerHandleReference(const ServiceWorkerObjectInfo& info,
diff --git a/content/common/service_worker/service_worker_messages.h b/content/common/service_worker/service_worker_messages.h
index 6b7b090..4e85ec0 100644
--- a/content/common/service_worker/service_worker_messages.h
+++ b/content/common/service_worker/service_worker_messages.h
@@ -83,6 +83,7 @@ IPC_STRUCT_TRAITS_BEGIN(content::ServiceWorkerObjectInfo)
IPC_STRUCT_TRAITS_MEMBER(scope)
IPC_STRUCT_TRAITS_MEMBER(url)
IPC_STRUCT_TRAITS_MEMBER(state)
+ IPC_STRUCT_TRAITS_MEMBER(version_id)
IPC_STRUCT_TRAITS_END()
IPC_STRUCT_TRAITS_BEGIN(content::ServiceWorkerRegistrationObjectInfo)
diff --git a/content/common/service_worker/service_worker_types.cc b/content/common/service_worker/service_worker_types.cc
index d7c1785..dec264e 100644
--- a/content/common/service_worker/service_worker_types.cc
+++ b/content/common/service_worker/service_worker_types.cc
@@ -70,7 +70,8 @@ ServiceWorkerBatchOperation::ServiceWorkerBatchOperation() {}
ServiceWorkerObjectInfo::ServiceWorkerObjectInfo()
: handle_id(kInvalidServiceWorkerHandleId),
- state(blink::WebServiceWorkerStateUnknown) {}
+ state(blink::WebServiceWorkerStateUnknown),
+ version_id(kInvalidServiceWorkerVersionId) {}
ServiceWorkerRegistrationObjectInfo::ServiceWorkerRegistrationObjectInfo()
: handle_id(kInvalidServiceWorkerRegistrationHandleId),
diff --git a/content/common/service_worker/service_worker_types.h b/content/common/service_worker/service_worker_types.h
index 9fa5bc0..d0ef45c 100644
--- a/content/common/service_worker/service_worker_types.h
+++ b/content/common/service_worker/service_worker_types.h
@@ -150,6 +150,7 @@ struct CONTENT_EXPORT ServiceWorkerObjectInfo {
GURL scope;
GURL url;
blink::WebServiceWorkerState state;
+ int64 version_id;
};
struct ServiceWorkerRegistrationObjectInfo {
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 2eac475..802a9bc 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -23,6 +23,7 @@
#include "content/child/plugin_messages.h"
#include "content/child/quota_dispatcher.h"
#include "content/child/request_extra_data.h"
+#include "content/child/service_worker/service_worker_handle_reference.h"
#include "content/child/service_worker/service_worker_network_provider.h"
#include "content/child/service_worker/service_worker_provider_context.h"
#include "content/child/service_worker/web_service_worker_provider_impl.h"
@@ -3267,6 +3268,16 @@ bool RenderFrameImpl::isControlledByServiceWorker(WebDataSource& data_source) {
kInvalidServiceWorkerHandleId;
}
+int64_t RenderFrameImpl::serviceWorkerID(WebDataSource& data_source) {
+ ServiceWorkerNetworkProvider* provider =
+ ServiceWorkerNetworkProvider::FromDocumentState(
+ DocumentState::FromDataSource(&data_source));
+
+ if (provider->context()->controller())
+ return provider->context()->controller()->version_id();
+ return kInvalidServiceWorkerVersionId;
+}
+
void RenderFrameImpl::postAccessibilityEvent(const blink::WebAXObject& obj,
blink::WebAXEvent event) {
HandleWebAccessibilityEvent(obj, event);
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 9457afc..dad7b18 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -457,7 +457,8 @@ class CONTENT_EXPORT RenderFrameImpl
virtual void didLoseWebGLContext(blink::WebLocalFrame* frame,
int arb_robustness_status_code);
virtual blink::WebScreenOrientationClient* webScreenOrientationClient();
- virtual bool isControlledByServiceWorker(blink::WebDataSource&);
+ virtual bool isControlledByServiceWorker(blink::WebDataSource& data_source);
+ virtual int64_t serviceWorkerID(blink::WebDataSource& data_source);
virtual void postAccessibilityEvent(const blink::WebAXObject& obj,
blink::WebAXEvent event);
virtual void didChangeManifest(blink::WebLocalFrame*);