| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CONTENT_COMMON_CHILD_PROCESS_INFO_H_ | 5 #ifndef CONTENT_COMMON_CHILD_PROCESS_INFO_H_ |
| 6 #define CONTENT_COMMON_CHILD_PROCESS_INFO_H_ | 6 #define CONTENT_COMMON_CHILD_PROCESS_INFO_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| 11 #include "base/process.h" | 11 #include "base/process.h" |
| 12 #include "base/string16.h" | 12 #include "base/string16.h" |
| 13 #include "content/common/content_export.h" | 13 #include "content/common/content_export.h" |
| 14 #include "content/public/common/process_type.h" |
| 14 | 15 |
| 15 // Holds information about a child process. | 16 // Holds information about a child process. |
| 16 class CONTENT_EXPORT ChildProcessInfo { | 17 class CONTENT_EXPORT ChildProcessInfo { |
| 17 public: | 18 public: |
| 18 // NOTE: Do not remove or reorder the elements in this enum, and only add new | |
| 19 // items at the end, right before MAX_PROCESS. We depend on these specific | |
| 20 // values in histograms. | |
| 21 enum ProcessType { | |
| 22 UNKNOWN_PROCESS = 1, | |
| 23 BROWSER_PROCESS, | |
| 24 RENDER_PROCESS, | |
| 25 PLUGIN_PROCESS, | |
| 26 WORKER_PROCESS, | |
| 27 NACL_LOADER_PROCESS, | |
| 28 UTILITY_PROCESS, | |
| 29 PROFILE_IMPORT_PROCESS, | |
| 30 ZYGOTE_PROCESS, | |
| 31 SANDBOX_HELPER_PROCESS, | |
| 32 NACL_BROKER_PROCESS, | |
| 33 GPU_PROCESS, | |
| 34 PPAPI_PLUGIN_PROCESS, | |
| 35 PPAPI_BROKER_PROCESS, | |
| 36 MAX_PROCESS | |
| 37 }; | |
| 38 | |
| 39 ChildProcessInfo(const ChildProcessInfo& original); | 19 ChildProcessInfo(const ChildProcessInfo& original); |
| 40 virtual ~ChildProcessInfo(); | 20 virtual ~ChildProcessInfo(); |
| 41 | 21 |
| 42 ChildProcessInfo& operator=(const ChildProcessInfo& original); | 22 ChildProcessInfo& operator=(const ChildProcessInfo& original); |
| 43 | 23 |
| 44 // Returns the type of the process. | 24 // Returns the type of the process. |
| 45 ProcessType type() const { return type_; } | 25 content::ProcessType type() const { return type_; } |
| 46 | 26 |
| 47 // Returns the name of the process. i.e. for plugins it might be Flash, while | 27 // Returns the name of the process. i.e. for plugins it might be Flash, while |
| 48 // for workers it might be the domain that it's from. | 28 // for workers it might be the domain that it's from. |
| 49 const string16& name() const { return name_; } | 29 const string16& name() const { return name_; } |
| 50 | 30 |
| 51 // Returns the version of the exe, this only applies to plugins. Otherwise | 31 // Returns the version of the exe, this only applies to plugins. Otherwise |
| 52 // the string is empty. | 32 // the string is empty. |
| 53 const string16& version() const { return version_; } | 33 const string16& version() const { return version_; } |
| 54 | 34 |
| 55 // Getter to the process handle. | 35 // Getter to the process handle. |
| 56 base::ProcessHandle handle() const { return process_.handle(); } | 36 base::ProcessHandle handle() const { return process_.handle(); } |
| 57 | 37 |
| 58 // Getter to the process ID. | 38 // Getter to the process ID. |
| 59 int pid() const { return process_.pid(); } | 39 int pid() const { return process_.pid(); } |
| 60 | 40 |
| 61 // The unique identifier for this child process. This identifier is NOT a | 41 // The unique identifier for this child process. This identifier is NOT a |
| 62 // process ID, and will be unique for all types of child process for | 42 // process ID, and will be unique for all types of child process for |
| 63 // one run of the browser. | 43 // one run of the browser. |
| 64 int id() const { return id_; } | 44 int id() const { return id_; } |
| 65 | 45 |
| 66 void SetProcessBackgrounded() const { process_.SetProcessBackgrounded(true); } | 46 void SetProcessBackgrounded() const { process_.SetProcessBackgrounded(true); } |
| 67 | 47 |
| 68 // Returns an English name of the process type, should only be used for non | 48 // Returns an English name of the process type, should only be used for non |
| 69 // user-visible strings, or debugging pages like about:memory. | 49 // user-visible strings, or debugging pages like about:memory. |
| 70 static std::string GetTypeNameInEnglish(ProcessType type); | 50 static std::string GetTypeNameInEnglish(content::ProcessType type); |
| 71 | 51 |
| 72 // We define the < operator so that the ChildProcessInfo can be used as a key | 52 // We define the < operator so that the ChildProcessInfo can be used as a key |
| 73 // in a std::map. | 53 // in a std::map. |
| 74 bool operator <(const ChildProcessInfo& rhs) const { | 54 bool operator <(const ChildProcessInfo& rhs) const { |
| 75 if (process_.handle() != rhs.process_.handle()) | 55 if (process_.handle() != rhs.process_.handle()) |
| 76 return process_ .handle() < rhs.process_.handle(); | 56 return process_ .handle() < rhs.process_.handle(); |
| 77 return false; | 57 return false; |
| 78 } | 58 } |
| 79 | 59 |
| 80 bool operator ==(const ChildProcessInfo& rhs) const { | 60 bool operator ==(const ChildProcessInfo& rhs) const { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 92 // | 72 // |
| 93 // This function is threadsafe since RenderProcessHost is on the UI thread, | 73 // This function is threadsafe since RenderProcessHost is on the UI thread, |
| 94 // but normally this will be used on the IO thread. | 74 // but normally this will be used on the IO thread. |
| 95 static int GenerateChildProcessUniqueId(); | 75 static int GenerateChildProcessUniqueId(); |
| 96 | 76 |
| 97 protected: | 77 protected: |
| 98 // Derived objects need to use this constructor so we know what type we are. | 78 // Derived objects need to use this constructor so we know what type we are. |
| 99 // If the caller has already generated a unique ID for this child process, | 79 // If the caller has already generated a unique ID for this child process, |
| 100 // it should pass it as the second argument. Otherwise, -1 should be passed | 80 // it should pass it as the second argument. Otherwise, -1 should be passed |
| 101 // and a unique ID will be automatically generated. | 81 // and a unique ID will be automatically generated. |
| 102 ChildProcessInfo(ProcessType type, int id); | 82 ChildProcessInfo(content::ProcessType type, int id); |
| 103 | 83 |
| 104 void set_type(ProcessType type) { type_ = type; } | 84 void set_type(content::ProcessType type) { type_ = type; } |
| 105 void set_name(const string16& name) { name_ = name; } | 85 void set_name(const string16& name) { name_ = name; } |
| 106 void set_version(const string16& ver) { version_ = ver; } | 86 void set_version(const string16& ver) { version_ = ver; } |
| 107 void set_handle(base::ProcessHandle handle) { process_.set_handle(handle); } | 87 void set_handle(base::ProcessHandle handle) { process_.set_handle(handle); } |
| 108 | 88 |
| 109 private: | 89 private: |
| 110 ProcessType type_; | 90 content::ProcessType type_; |
| 111 string16 name_; | 91 string16 name_; |
| 112 string16 version_; | 92 string16 version_; |
| 113 int id_; | 93 int id_; |
| 114 | 94 |
| 115 // The handle to the process. | 95 // The handle to the process. |
| 116 mutable base::Process process_; | 96 mutable base::Process process_; |
| 117 }; | 97 }; |
| 118 | 98 |
| 119 #endif // CONTENT_COMMON_CHILD_PROCESS_INFO_H_ | 99 #endif // CONTENT_COMMON_CHILD_PROCESS_INFO_H_ |
| OLD | NEW |