terminal_private_api.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
1// Copyright (c) 2012 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_BROWSER_EXTENSIONS_API_TERMINAL_TERMINAL_PRIVATE_API_H_
6#define CHROME_BROWSER_EXTENSIONS_API_TERMINAL_TERMINAL_PRIVATE_API_H_
7
8#include <string>
9
10#include "chrome/browser/extensions/extension_function.h"
11
12// Base class for all terminalPrivate function classes. Main purpose is to run
13// permission check before calling actual function implementation.
14class TerminalPrivateFunction : public AsyncExtensionFunction {
15 public:
16  TerminalPrivateFunction();
17
18 protected:
19  virtual ~TerminalPrivateFunction();
20
21  // ExtensionFunction:
22  virtual bool RunImpl() OVERRIDE;
23
24  // Override with actual extension function implementation.
25  virtual bool RunTerminalFunction() = 0;
26
27};
28
29// Opens new terminal process. Returns the new process id.
30class OpenTerminalProcessFunction : public TerminalPrivateFunction {
31 public:
32  DECLARE_EXTENSION_FUNCTION_NAME("terminalPrivate.openTerminalProcess")
33
34  OpenTerminalProcessFunction();
35
36 protected:
37  virtual ~OpenTerminalProcessFunction();
38
39  // TerminalPrivateFunction:
40  virtual bool RunTerminalFunction() OVERRIDE;
41
42 private:
43  void OpenOnFileThread();
44  void RespondOnUIThread(pid_t pid);
45
46  const char* command_;
47};
48
49// Send input to the terminal process specified by the pid sent as an argument.
50class SendInputToTerminalProcessFunction : public TerminalPrivateFunction {
51 public:
52  DECLARE_EXTENSION_FUNCTION_NAME("terminalPrivate.sendInput")
53
54 protected:
55  virtual ~SendInputToTerminalProcessFunction();
56
57  // TerminalPrivateFunction:
58  virtual bool RunTerminalFunction() OVERRIDE;
59
60 private:
61  void SendInputOnFileThread(pid_t pid, const std::string& input);
62  void RespondOnUIThread(bool success);
63};
64
65// Closes terminal process with given pid.
66class CloseTerminalProcessFunction : public TerminalPrivateFunction {
67 public:
68  DECLARE_EXTENSION_FUNCTION_NAME("terminalPrivate.closeTerminalProcess")
69
70 protected:
71  virtual ~CloseTerminalProcessFunction();
72
73  virtual bool RunTerminalFunction() OVERRIDE;
74
75 private:
76  void CloseOnFileThread(pid_t pid);
77  void RespondOnUIThread(bool success);
78};
79
80// Called by extension when terminal size changes.
81class OnTerminalResizeFunction : public TerminalPrivateFunction {
82 public:
83  DECLARE_EXTENSION_FUNCTION_NAME("terminalPrivate.onTerminalResize")
84
85 protected:
86  virtual ~OnTerminalResizeFunction();
87
88  virtual bool RunTerminalFunction() OVERRIDE;
89
90 private:
91  void OnResizeOnFileThread(pid_t pid, int width, int height);
92  void RespondOnUIThread(bool success);
93};
94
95#endif  // CHROME_BROWSER_EXTENSIONS_API_TERMINAL_TERMINAL_PRIVATE_API_H_
96