1// Copyright 2014 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_WEB_UI_RUNNER_H_
6#define CONTENT_RENDERER_WEB_UI_RUNNER_H_
7
8#include "gin/runner.h"
9
10namespace blink {
11class WebFrame;
12}
13
14namespace content {
15
16// Implementation of gin::Runner that forwards Runner functions to WebFrame.
17class WebUIRunner : public gin::Runner {
18 public:
19  // Does not take ownership of ContextHolder.
20  WebUIRunner(blink::WebFrame* frame, gin::ContextHolder* context_holder);
21  virtual ~WebUIRunner();
22
23  void RegisterBuiltinModules();
24
25  // Runner overrides:
26  virtual void Run(const std::string& source,
27                   const std::string& resource_name) OVERRIDE;
28  virtual v8::Handle<v8::Value> Call(v8::Handle<v8::Function> function,
29                                     v8::Handle<v8::Value> receiver,
30                                     int argc,
31                                     v8::Handle<v8::Value> argv[]) OVERRIDE;
32  virtual gin::ContextHolder* GetContextHolder() OVERRIDE;
33
34 private:
35  // Frame to execute script in.
36  blink::WebFrame* frame_;
37
38  // Created by blink bindings to V8.
39  gin::ContextHolder* context_holder_;
40
41  DISALLOW_COPY_AND_ASSIGN(WebUIRunner);
42};
43
44}  // namespace content
45
46#endif  // CONTENT_RENDERER_WEB_UI_RUNNER_H_
47