terminal_private_api.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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 TerminalPrivateOpenTerminalProcessFunction 31 : public TerminalPrivateFunction { 32 public: 33 DECLARE_EXTENSION_FUNCTION("terminalPrivate.openTerminalProcess", 34 TERMINALPRIVATE_OPENTERMINALPROCESS) 35 36 TerminalPrivateOpenTerminalProcessFunction(); 37 38 protected: 39 virtual ~TerminalPrivateOpenTerminalProcessFunction(); 40 41 // TerminalPrivateFunction: 42 virtual bool RunTerminalFunction() OVERRIDE; 43 44 private: 45 void OpenOnFileThread(); 46 void RespondOnUIThread(pid_t pid); 47 48 const char* command_; 49}; 50 51// Send input to the terminal process specified by the pid sent as an argument. 52class TerminalPrivateSendInputFunction : public TerminalPrivateFunction { 53 public: 54 DECLARE_EXTENSION_FUNCTION("terminalPrivate.sendInput", 55 TERMINALPRIVATE_SENDINPUT) 56 57 protected: 58 virtual ~TerminalPrivateSendInputFunction(); 59 60 // TerminalPrivateFunction: 61 virtual bool RunTerminalFunction() OVERRIDE; 62 63 private: 64 void SendInputOnFileThread(pid_t pid, const std::string& input); 65 void RespondOnUIThread(bool success); 66}; 67 68// Closes terminal process with given pid. 69class TerminalPrivateCloseTerminalProcessFunction 70 : public TerminalPrivateFunction { 71 public: 72 DECLARE_EXTENSION_FUNCTION("terminalPrivate.closeTerminalProcess", 73 TERMINALPRIVATE_CLOSETERMINALPROCESS) 74 75 protected: 76 virtual ~TerminalPrivateCloseTerminalProcessFunction(); 77 78 virtual bool RunTerminalFunction() OVERRIDE; 79 80 private: 81 void CloseOnFileThread(pid_t pid); 82 void RespondOnUIThread(bool success); 83}; 84 85// Called by extension when terminal size changes. 86class TerminalPrivateOnTerminalResizeFunction : public TerminalPrivateFunction { 87 public: 88 DECLARE_EXTENSION_FUNCTION("terminalPrivate.onTerminalResize", 89 TERMINALPRIVATE_ONTERMINALRESIZE) 90 91 protected: 92 virtual ~TerminalPrivateOnTerminalResizeFunction(); 93 94 virtual bool RunTerminalFunction() OVERRIDE; 95 96 private: 97 void OnResizeOnFileThread(pid_t pid, int width, int height); 98 void RespondOnUIThread(bool success); 99}; 100 101#endif // CHROME_BROWSER_EXTENSIONS_API_TERMINAL_TERMINAL_PRIVATE_API_H_ 102