// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_EXTENSIONS_API_PROCESSES_PROCESSES_API_H__ #define CHROME_BROWSER_EXTENSIONS_API_PROCESSES_PROCESSES_API_H__ #include <vector> #include "base/memory/raw_ptr.h" #include "base/values.h" #include "chrome/browser/task_manager/task_manager_observer.h" #include "extensions/browser/browser_context_keyed_api_factory.h" #include "extensions/browser/event_router.h" #include "extensions/browser/extension_event_histogram_value.h" #include "extensions/browser/extension_function.h" class ProcessesApiTest; namespace extensions { // Observes the Task Manager and routes the notifications as events to the // extension system. class ProcessesEventRouter : public task_manager::TaskManagerObserver { … }; //////////////////////////////////////////////////////////////////////////////// // The profile-keyed service that manages the processes extension API. class ProcessesAPI : public BrowserContextKeyedAPI, public EventRouter::Observer { … }; //////////////////////////////////////////////////////////////////////////////// // This extension function returns the Process object for the renderer process // currently in use by the specified Tab. class ProcessesGetProcessIdForTabFunction : public ExtensionFunction { … }; //////////////////////////////////////////////////////////////////////////////// // Extension function that allows terminating Chrome subprocesses, by supplying // the unique ID for the process coming from the ChildProcess ID pool. // Using unique IDs instead of OS process IDs allows two advantages: // * guaranteed uniqueness, since OS process IDs can be reused. // * guards against killing non-Chrome processes. class ProcessesTerminateFunction : public ExtensionFunction { … }; //////////////////////////////////////////////////////////////////////////////// // Extension function which returns a set of Process objects, containing the // details corresponding to the process IDs supplied as input. class ProcessesGetProcessInfoFunction : public ExtensionFunction, public task_manager::TaskManagerObserver { … }; } // namespace extensions #endif // CHROME_BROWSER_EXTENSIONS_API_PROCESSES_PROCESSES_API_H__