diff options
author | nhiroki <nhiroki@chromium.org> | 2014-10-28 21:02:47 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-10-29 04:03:17 +0000 |
commit | febadeedcd8bf2339a2718b4fbeaaab35cf1fce9 (patch) | |
tree | 753427e1e99abf1147a1d96e263099349439aa1b | |
parent | 72c5a2a0d6729802a43a114700d259f69fb1dc2e (diff) | |
download | chromium_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}
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*); |