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 CHROME_RENDERER_WORKER_PERMISSION_CLIENT_PROXY_H_
6#define CHROME_RENDERER_WORKER_PERMISSION_CLIENT_PROXY_H_
7
8#include "base/basictypes.h"
9#include "base/memory/ref_counted.h"
10#include "third_party/WebKit/public/web/WebWorkerPermissionClientProxy.h"
11#include "url/gurl.h"
12
13namespace IPC {
14class SyncMessageFilter;
15}
16
17namespace content {
18class RenderFrame;
19}
20
21namespace blink {
22class WebFrame;
23}
24
25// This proxy is created on the main renderer thread then passed onto
26// the blink's worker thread.
27class WorkerPermissionClientProxy
28    : public blink::WebWorkerPermissionClientProxy {
29 public:
30  WorkerPermissionClientProxy(content::RenderFrame* render_frame,
31                              blink::WebFrame* frame);
32  virtual ~WorkerPermissionClientProxy();
33
34  // WebWorkerPermissionClientProxy overrides.
35  virtual bool allowDatabase(const blink::WebString& name,
36                             const blink::WebString& display_name,
37                             unsigned long estimated_size);
38  virtual bool requestFileSystemAccessSync();
39  virtual bool allowIndexedDB(const blink::WebString& name);
40
41 private:
42  // Loading document context for this worker.
43  const int routing_id_;
44  bool is_unique_origin_;
45  GURL document_origin_url_;
46  GURL top_frame_origin_url_;
47  scoped_refptr<IPC::SyncMessageFilter> sync_message_filter_;
48
49  DISALLOW_COPY_AND_ASSIGN(WorkerPermissionClientProxy);
50};
51
52#endif  // CHROME_RENDERER_WORKER_PERMISSION_CLIENT_PROXY_H_
53