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