1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CONTENT_RENDERER_SHARED_WORKER_REPOSITORY_H_
6#define CONTENT_RENDERER_SHARED_WORKER_REPOSITORY_H_
7
8#include <set>
9
10#include "base/basictypes.h"
11#include "content/public/renderer/render_frame_observer.h"
12#include "third_party/WebKit/public/web/WebContentSecurityPolicy.h"
13#include "third_party/WebKit/public/web/WebSharedWorkerRepositoryClient.h"
14
15namespace content {
16
17class RenderFrameImpl;
18
19class SharedWorkerRepository : public RenderFrameObserver,
20                               public blink::WebSharedWorkerRepositoryClient {
21 public:
22  explicit SharedWorkerRepository(RenderFrameImpl* render_frame);
23  virtual ~SharedWorkerRepository();
24
25  // WebSharedWorkerRepositoryClient overrides.
26  virtual blink::WebSharedWorkerConnector* createSharedWorkerConnector(
27      const blink::WebURL& url,
28      const blink::WebString& name,
29      DocumentID document_id,
30      const blink::WebString& content_security_policy,
31      blink::WebContentSecurityPolicyType) OVERRIDE;
32  virtual void documentDetached(DocumentID document_id) OVERRIDE;
33
34 private:
35  std::set<DocumentID> documents_with_workers_;
36
37  DISALLOW_COPY_AND_ASSIGN(SharedWorkerRepository);
38};
39
40}  // namespace content
41
42#endif  // CONTENT_RENDERER_SHARED_WORKER_REPOSITORY_H_
43