OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #include "chrome/browser/android/seccomp_support_detector.h" | 5 #include "chrome/browser/android/seccomp_support_detector.h" |
6 | 6 |
7 #include <stdio.h> | 7 #include <stdio.h> |
8 #include <sys/utsname.h> | 8 #include <sys/utsname.h> |
9 | 9 |
10 #include "base/message_loop/message_loop_proxy.h" | 10 #include "base/message_loop/message_loop_proxy.h" |
11 #include "base/metrics/histogram_macros.h" | 11 #include "base/metrics/histogram_macros.h" |
12 #include "base/metrics/sparse_histogram.h" | 12 #include "base/metrics/sparse_histogram.h" |
13 #include "chrome/common/chrome_utility_messages.h" | 13 #include "chrome/common/chrome_utility_messages.h" |
| 14 #include "chrome/grit/generated_resources.h" |
14 #include "content/public/browser/browser_thread.h" | 15 #include "content/public/browser/browser_thread.h" |
15 #include "content/public/browser/utility_process_host.h" | 16 #include "content/public/browser/utility_process_host.h" |
| 17 #include "ui/base/l10n/l10n_util.h" |
16 | 18 |
17 using content::BrowserThread; | 19 using content::BrowserThread; |
18 | 20 |
19 enum AndroidSeccompStatus { | 21 enum AndroidSeccompStatus { |
20 DETECTION_FAILED, // The process crashed during detection. | 22 DETECTION_FAILED, // The process crashed during detection. |
21 NOT_SUPPORTED, // Kernel has no seccomp support. | 23 NOT_SUPPORTED, // Kernel has no seccomp support. |
22 SUPPORTED, // Kernel has seccomp support. | 24 SUPPORTED, // Kernel has seccomp support. |
23 LAST_STATUS | 25 LAST_STATUS |
24 }; | 26 }; |
25 | 27 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 base::Bind(&SeccompSupportDetector::OnDetectSyscall, this, false)); | 68 base::Bind(&SeccompSupportDetector::OnDetectSyscall, this, false)); |
67 #endif | 69 #endif |
68 } | 70 } |
69 | 71 |
70 void SeccompSupportDetector::DetectSeccomp() { | 72 void SeccompSupportDetector::DetectSeccomp() { |
71 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 73 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
72 | 74 |
73 content::UtilityProcessHost* utility_process_host = | 75 content::UtilityProcessHost* utility_process_host = |
74 content::UtilityProcessHost::Create( | 76 content::UtilityProcessHost::Create( |
75 this, base::MessageLoopProxy::current()); | 77 this, base::MessageLoopProxy::current()); |
| 78 utility_process_host->SetName(l10n_util::GetStringUTF16( |
| 79 IDS_UTILITY_PROCESS_SECCOMP_DETECTOR_NAME)); |
76 utility_process_host->Send(new ChromeUtilityMsg_DetectSeccompSupport()); | 80 utility_process_host->Send(new ChromeUtilityMsg_DetectSeccompSupport()); |
77 } | 81 } |
78 | 82 |
79 void SeccompSupportDetector::OnProcessCrashed(int exit_code) { | 83 void SeccompSupportDetector::OnProcessCrashed(int exit_code) { |
80 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 84 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
81 // The process crashed. Since prctl detection happens first, report which | 85 // The process crashed. Since prctl detection happens first, report which |
82 // probe failed. | 86 // probe failed. |
83 if (prctl_detected_) { | 87 if (prctl_detected_) { |
84 UMA_HISTOGRAM_ENUMERATION("Android.SeccompStatus.Syscall", | 88 UMA_HISTOGRAM_ENUMERATION("Android.SeccompStatus.Syscall", |
85 DETECTION_FAILED, | 89 DETECTION_FAILED, |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 122 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
119 DCHECK(prctl_detected_); | 123 DCHECK(prctl_detected_); |
120 | 124 |
121 UMA_HISTOGRAM_ENUMERATION("Android.SeccompStatus.Syscall", | 125 UMA_HISTOGRAM_ENUMERATION("Android.SeccompStatus.Syscall", |
122 syscall_supported ? SUPPORTED : NOT_SUPPORTED, | 126 syscall_supported ? SUPPORTED : NOT_SUPPORTED, |
123 LAST_STATUS); | 127 LAST_STATUS); |
124 | 128 |
125 // The utility process will shutdown after this, and this object will | 129 // The utility process will shutdown after this, and this object will |
126 // be deleted when the UtilityProcessHost releases its reference. | 130 // be deleted when the UtilityProcessHost releases its reference. |
127 } | 131 } |
OLD | NEW |