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