diff options
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*); |