Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(164)

Side by Side Diff: chrome/utility/chrome_content_utility_client.cc

Issue 1018953004: Add SeccompSupportDetector for Android. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Detect separately Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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/utility/chrome_content_utility_client.h" 5 #include "chrome/utility/chrome_content_utility_client.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/json/json_reader.h" 9 #include "base/json/json_reader.h"
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
(...skipping 11 matching lines...) Expand all
22 #include "ipc/ipc_channel.h" 22 #include "ipc/ipc_channel.h"
23 #include "skia/ext/image_operations.h" 23 #include "skia/ext/image_operations.h"
24 #include "third_party/skia/include/core/SkBitmap.h" 24 #include "third_party/skia/include/core/SkBitmap.h"
25 #include "third_party/zlib/google/zip.h" 25 #include "third_party/zlib/google/zip.h"
26 #include "ui/gfx/codec/jpeg_codec.h" 26 #include "ui/gfx/codec/jpeg_codec.h"
27 #include "ui/gfx/geometry/size.h" 27 #include "ui/gfx/geometry/size.h"
28 28
29 #if !defined(OS_ANDROID) 29 #if !defined(OS_ANDROID)
30 #include "chrome/utility/profile_import_handler.h" 30 #include "chrome/utility/profile_import_handler.h"
31 #include "net/proxy/mojo_proxy_resolver_factory_impl.h" 31 #include "net/proxy/mojo_proxy_resolver_factory_impl.h"
32 #else
33 #include "sandbox/linux/seccomp-bpf/sandbox_bpf.h"
32 #endif 34 #endif
33 35
34 #if defined(OS_WIN) 36 #if defined(OS_WIN)
35 #include "chrome/utility/font_cache_handler_win.h" 37 #include "chrome/utility/font_cache_handler_win.h"
36 #include "chrome/utility/shell_handler_win.h" 38 #include "chrome/utility/shell_handler_win.h"
37 #endif 39 #endif
38 40
39 #if defined(ENABLE_EXTENSIONS) 41 #if defined(ENABLE_EXTENSIONS)
40 #include "chrome/common/extensions/chrome_utility_extensions_messages.h" 42 #include "chrome/common/extensions/chrome_utility_extensions_messages.h"
41 #include "chrome/utility/extensions/extensions_handler.h" 43 #include "chrome/utility/extensions/extensions_handler.h"
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_AnalyzeZipFileForDownloadProtection, 157 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_AnalyzeZipFileForDownloadProtection,
156 OnAnalyzeZipFileForDownloadProtection) 158 OnAnalyzeZipFileForDownloadProtection)
157 #endif 159 #endif
158 #if defined(ENABLE_EXTENSIONS) 160 #if defined(ENABLE_EXTENSIONS)
159 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseMediaMetadata, 161 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseMediaMetadata,
160 OnParseMediaMetadata) 162 OnParseMediaMetadata)
161 #endif 163 #endif
162 #if defined(OS_CHROMEOS) 164 #if defined(OS_CHROMEOS)
163 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_CreateZipFile, OnCreateZipFile) 165 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_CreateZipFile, OnCreateZipFile)
164 #endif 166 #endif
167 #if defined(OS_ANDROID)
168 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_DetectSeccompSupport,
169 OnDetectSeccompSupport)
170 #endif
165 IPC_MESSAGE_UNHANDLED(handled = false) 171 IPC_MESSAGE_UNHANDLED(handled = false)
166 IPC_END_MESSAGE_MAP() 172 IPC_END_MESSAGE_MAP()
167 173
168 for (Handlers::iterator it = handlers_.begin(); 174 for (Handlers::iterator it = handlers_.begin();
169 !handled && it != handlers_.end(); ++it) { 175 !handled && it != handlers_.end(); ++it) {
170 handled = (*it)->OnMessageReceived(message); 176 handled = (*it)->OnMessageReceived(message);
171 } 177 }
172 178
173 return handled; 179 return handled;
174 } 180 }
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 succeeded = zip::ZipFiles(src_dir, src_relative_paths, dest_fd.fd); 276 succeeded = zip::ZipFiles(src_dir, src_relative_paths, dest_fd.fd);
271 277
272 if (succeeded) 278 if (succeeded)
273 Send(new ChromeUtilityHostMsg_CreateZipFile_Succeeded()); 279 Send(new ChromeUtilityHostMsg_CreateZipFile_Succeeded());
274 else 280 else
275 Send(new ChromeUtilityHostMsg_CreateZipFile_Failed()); 281 Send(new ChromeUtilityHostMsg_CreateZipFile_Failed());
276 ReleaseProcessIfNeeded(); 282 ReleaseProcessIfNeeded();
277 } 283 }
278 #endif // defined(OS_CHROMEOS) 284 #endif // defined(OS_CHROMEOS)
279 285
286 #if defined(OS_ANDROID)
287 void ChromeContentUtilityClient::OnDetectSeccompSupport() {
288 bool supports_prctl = sandbox::SandboxBPF::SupportsSeccompSandbox(
289 sandbox::SandboxBPF::SeccompLevel::SINGLE_THREADED);
290 Send(new ChromeUtilityHostMsg_DetectSeccompSupport_ResultPrctl(
jln (very slow on Chromium) 2015/03/19 00:12:12 It's difficult to convince oneself that by perform
Robert Sesek 2015/03/19 00:18:41 I'm pretty sure FIFO is guaranteed by the IPC syst
291 supports_prctl));
292
293 bool supports_syscall = sandbox::SandboxBPF::SupportsSeccompSandbox(
294 sandbox::SandboxBPF::SeccompLevel::MULTI_THREADED);
295 Send(new ChromeUtilityHostMsg_DetectSeccompSupport_ResultSyscall(
296 supports_syscall));
297
298 ReleaseProcessIfNeeded();
299 }
300 #endif // defined(OS_ANDROID)
301
280 void ChromeContentUtilityClient::OnRobustJPEGDecodeImage( 302 void ChromeContentUtilityClient::OnRobustJPEGDecodeImage(
281 const std::vector<unsigned char>& encoded_data) { 303 const std::vector<unsigned char>& encoded_data) {
282 // Our robust jpeg decoding is using IJG libjpeg. 304 // Our robust jpeg decoding is using IJG libjpeg.
283 if (gfx::JPEGCodec::JpegLibraryVariant() == gfx::JPEGCodec::IJG_LIBJPEG && 305 if (gfx::JPEGCodec::JpegLibraryVariant() == gfx::JPEGCodec::IJG_LIBJPEG &&
284 !encoded_data.empty()) { 306 !encoded_data.empty()) {
285 scoped_ptr<SkBitmap> decoded_image(gfx::JPEGCodec::Decode( 307 scoped_ptr<SkBitmap> decoded_image(gfx::JPEGCodec::Decode(
286 &encoded_data[0], encoded_data.size())); 308 &encoded_data[0], encoded_data.size()));
287 if (!decoded_image.get() || decoded_image->empty()) { 309 if (!decoded_image.get() || decoded_image->empty()) {
288 Send(new ChromeUtilityHostMsg_DecodeImage_Failed()); 310 Send(new ChromeUtilityHostMsg_DecodeImage_Failed());
289 } else { 311 } else {
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 const std::string& mime_type, int64 total_size, bool get_attached_images) { 387 const std::string& mime_type, int64 total_size, bool get_attached_images) {
366 // Only one IPCDataSource may be created and added to the list of handlers. 388 // Only one IPCDataSource may be created and added to the list of handlers.
367 metadata::IPCDataSource* source = new metadata::IPCDataSource(total_size); 389 metadata::IPCDataSource* source = new metadata::IPCDataSource(total_size);
368 handlers_.push_back(source); 390 handlers_.push_back(source);
369 391
370 metadata::MediaMetadataParser* parser = new metadata::MediaMetadataParser( 392 metadata::MediaMetadataParser* parser = new metadata::MediaMetadataParser(
371 source, mime_type, get_attached_images); 393 source, mime_type, get_attached_images);
372 parser->Start(base::Bind(&FinishParseMediaMetadata, base::Owned(parser))); 394 parser->Start(base::Bind(&FinishParseMediaMetadata, base::Owned(parser)));
373 } 395 }
374 #endif 396 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698