1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// found in the LICENSE file.
4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#ifndef CONTENT_RENDERER_WEB_UI_RUNNER_H_
6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#define CONTENT_RENDERER_WEB_UI_RUNNER_H_
7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "gin/runner.h"
9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace blink {
11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class WebFrame;
12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace content {
15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Implementation of gin::Runner that forwards Runner functions to WebFrame.
17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class WebUIRunner : public gin::Runner {
18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public:
19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Does not take ownership of ContextHolder.
20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  WebUIRunner(blink::WebFrame* frame, gin::ContextHolder* context_holder);
21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual ~WebUIRunner();
22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  void RegisterBuiltinModules();
24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Runner overrides:
26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual void Run(const std::string& source,
27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                   const std::string& resource_name) OVERRIDE;
28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual v8::Handle<v8::Value> Call(v8::Handle<v8::Function> function,
29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                     v8::Handle<v8::Value> receiver,
30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                     int argc,
31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                     v8::Handle<v8::Value> argv[]) OVERRIDE;
32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual gin::ContextHolder* GetContextHolder() OVERRIDE;
33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private:
35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Frame to execute script in.
36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  blink::WebFrame* frame_;
37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Created by blink bindings to V8.
39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  gin::ContextHolder* context_holder_;
40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(WebUIRunner);
42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)};
43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}  // namespace content
45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif  // CONTENT_RENDERER_WEB_UI_RUNNER_H_
47