| OLD | NEW |
| 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 13 matching lines...) Expand all Loading... |
| 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 #endif | 32 #endif |
| 33 | 33 |
| 34 #if defined(OS_ANDROID) && defined(USE_SECCOMP_BPF) |
| 35 #include "sandbox/linux/seccomp-bpf/sandbox_bpf.h" |
| 36 #endif |
| 37 |
| 34 #if defined(OS_WIN) | 38 #if defined(OS_WIN) |
| 35 #include "chrome/utility/font_cache_handler_win.h" | 39 #include "chrome/utility/font_cache_handler_win.h" |
| 36 #include "chrome/utility/shell_handler_win.h" | 40 #include "chrome/utility/shell_handler_win.h" |
| 37 #endif | 41 #endif |
| 38 | 42 |
| 39 #if defined(ENABLE_EXTENSIONS) | 43 #if defined(ENABLE_EXTENSIONS) |
| 40 #include "chrome/common/extensions/chrome_utility_extensions_messages.h" | 44 #include "chrome/common/extensions/chrome_utility_extensions_messages.h" |
| 41 #include "chrome/utility/extensions/extensions_handler.h" | 45 #include "chrome/utility/extensions/extensions_handler.h" |
| 42 #include "chrome/utility/image_writer/image_writer_handler.h" | 46 #include "chrome/utility/image_writer/image_writer_handler.h" |
| 43 #include "chrome/utility/media_galleries/ipc_data_source.h" | 47 #include "chrome/utility/media_galleries/ipc_data_source.h" |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_AnalyzeZipFileForDownloadProtection, | 159 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_AnalyzeZipFileForDownloadProtection, |
| 156 OnAnalyzeZipFileForDownloadProtection) | 160 OnAnalyzeZipFileForDownloadProtection) |
| 157 #endif | 161 #endif |
| 158 #if defined(ENABLE_EXTENSIONS) | 162 #if defined(ENABLE_EXTENSIONS) |
| 159 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseMediaMetadata, | 163 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseMediaMetadata, |
| 160 OnParseMediaMetadata) | 164 OnParseMediaMetadata) |
| 161 #endif | 165 #endif |
| 162 #if defined(OS_CHROMEOS) | 166 #if defined(OS_CHROMEOS) |
| 163 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_CreateZipFile, OnCreateZipFile) | 167 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_CreateZipFile, OnCreateZipFile) |
| 164 #endif | 168 #endif |
| 169 #if defined(OS_ANDROID) && defined(USE_SECCOMP_BPF) |
| 170 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_DetectSeccompSupport, |
| 171 OnDetectSeccompSupport) |
| 172 #endif |
| 165 IPC_MESSAGE_UNHANDLED(handled = false) | 173 IPC_MESSAGE_UNHANDLED(handled = false) |
| 166 IPC_END_MESSAGE_MAP() | 174 IPC_END_MESSAGE_MAP() |
| 167 | 175 |
| 168 for (Handlers::iterator it = handlers_.begin(); | 176 for (Handlers::iterator it = handlers_.begin(); |
| 169 !handled && it != handlers_.end(); ++it) { | 177 !handled && it != handlers_.end(); ++it) { |
| 170 handled = (*it)->OnMessageReceived(message); | 178 handled = (*it)->OnMessageReceived(message); |
| 171 } | 179 } |
| 172 | 180 |
| 173 return handled; | 181 return handled; |
| 174 } | 182 } |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 270 succeeded = zip::ZipFiles(src_dir, src_relative_paths, dest_fd.fd); | 278 succeeded = zip::ZipFiles(src_dir, src_relative_paths, dest_fd.fd); |
| 271 | 279 |
| 272 if (succeeded) | 280 if (succeeded) |
| 273 Send(new ChromeUtilityHostMsg_CreateZipFile_Succeeded()); | 281 Send(new ChromeUtilityHostMsg_CreateZipFile_Succeeded()); |
| 274 else | 282 else |
| 275 Send(new ChromeUtilityHostMsg_CreateZipFile_Failed()); | 283 Send(new ChromeUtilityHostMsg_CreateZipFile_Failed()); |
| 276 ReleaseProcessIfNeeded(); | 284 ReleaseProcessIfNeeded(); |
| 277 } | 285 } |
| 278 #endif // defined(OS_CHROMEOS) | 286 #endif // defined(OS_CHROMEOS) |
| 279 | 287 |
| 288 #if defined(OS_ANDROID) && defined(USE_SECCOMP_BPF) |
| 289 void ChromeContentUtilityClient::OnDetectSeccompSupport() { |
| 290 bool supports_prctl = sandbox::SandboxBPF::SupportsSeccompSandbox( |
| 291 sandbox::SandboxBPF::SeccompLevel::SINGLE_THREADED); |
| 292 Send(new ChromeUtilityHostMsg_DetectSeccompSupport_ResultPrctl( |
| 293 supports_prctl)); |
| 294 |
| 295 bool supports_syscall = sandbox::SandboxBPF::SupportsSeccompSandbox( |
| 296 sandbox::SandboxBPF::SeccompLevel::MULTI_THREADED); |
| 297 Send(new ChromeUtilityHostMsg_DetectSeccompSupport_ResultSyscall( |
| 298 supports_syscall)); |
| 299 |
| 300 ReleaseProcessIfNeeded(); |
| 301 } |
| 302 #endif // defined(OS_ANDROID) && defined(USE_SECCOMP_BPF) |
| 303 |
| 280 void ChromeContentUtilityClient::OnRobustJPEGDecodeImage( | 304 void ChromeContentUtilityClient::OnRobustJPEGDecodeImage( |
| 281 const std::vector<unsigned char>& encoded_data) { | 305 const std::vector<unsigned char>& encoded_data) { |
| 282 // Our robust jpeg decoding is using IJG libjpeg. | 306 // Our robust jpeg decoding is using IJG libjpeg. |
| 283 if (gfx::JPEGCodec::JpegLibraryVariant() == gfx::JPEGCodec::IJG_LIBJPEG && | 307 if (gfx::JPEGCodec::JpegLibraryVariant() == gfx::JPEGCodec::IJG_LIBJPEG && |
| 284 !encoded_data.empty()) { | 308 !encoded_data.empty()) { |
| 285 scoped_ptr<SkBitmap> decoded_image(gfx::JPEGCodec::Decode( | 309 scoped_ptr<SkBitmap> decoded_image(gfx::JPEGCodec::Decode( |
| 286 &encoded_data[0], encoded_data.size())); | 310 &encoded_data[0], encoded_data.size())); |
| 287 if (!decoded_image.get() || decoded_image->empty()) { | 311 if (!decoded_image.get() || decoded_image->empty()) { |
| 288 Send(new ChromeUtilityHostMsg_DecodeImage_Failed()); | 312 Send(new ChromeUtilityHostMsg_DecodeImage_Failed()); |
| 289 } else { | 313 } else { |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 365 const std::string& mime_type, int64 total_size, bool get_attached_images) { | 389 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. | 390 // Only one IPCDataSource may be created and added to the list of handlers. |
| 367 metadata::IPCDataSource* source = new metadata::IPCDataSource(total_size); | 391 metadata::IPCDataSource* source = new metadata::IPCDataSource(total_size); |
| 368 handlers_.push_back(source); | 392 handlers_.push_back(source); |
| 369 | 393 |
| 370 metadata::MediaMetadataParser* parser = new metadata::MediaMetadataParser( | 394 metadata::MediaMetadataParser* parser = new metadata::MediaMetadataParser( |
| 371 source, mime_type, get_attached_images); | 395 source, mime_type, get_attached_images); |
| 372 parser->Start(base::Bind(&FinishParseMediaMetadata, base::Owned(parser))); | 396 parser->Start(base::Bind(&FinishParseMediaMetadata, base::Owned(parser))); |
| 373 } | 397 } |
| 374 #endif | 398 #endif |
| OLD | NEW |