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

Unified Diff: chrome/utility/chrome_content_utility_client.cc

Issue 345693002: Extensions: Split extensions utility IPC messages into its own file. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: disable another test Created 6 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: chrome/utility/chrome_content_utility_client.cc
diff --git a/chrome/utility/chrome_content_utility_client.cc b/chrome/utility/chrome_content_utility_client.cc
index b41b878d9009f0ddfe9ed4753530eac13516af1b..327d38ed7906ea15fd71b75869ad6e860b81d413 100644
--- a/chrome/utility/chrome_content_utility_client.cc
+++ b/chrome/utility/chrome_content_utility_client.cc
@@ -4,64 +4,36 @@
#include "chrome/utility/chrome_content_utility_client.h"
-#include "base/base64.h"
-#include "base/bind.h"
#include "base/command_line.h"
#include "base/files/file_path.h"
-#include "base/json/json_reader.h"
#include "base/memory/ref_counted.h"
-#include "base/path_service.h"
#include "base/time/time.h"
#include "chrome/common/chrome_utility_messages.h"
-#include "chrome/common/extensions/chrome_extensions_client.h"
-#include "chrome/common/extensions/update_manifest.h"
#include "chrome/common/safe_browsing/zip_analyzer.h"
#include "chrome/utility/chrome_content_utility_ipc_whitelist.h"
-#include "chrome/utility/extensions/unpacker.h"
-#include "chrome/utility/image_writer/image_writer_handler.h"
-#include "chrome/utility/profile_import_handler.h"
+#include "chrome/utility/utility_message_handler.h"
#include "chrome/utility/web_resource_unpacker.h"
#include "content/public/child/image_decoder_utils.h"
-#include "content/public/common/content_paths.h"
#include "content/public/common/content_switches.h"
#include "content/public/utility/utility_thread.h"
#include "courgette/courgette.h"
#include "courgette/third_party/bsdiff.h"
-#include "extensions/common/extension.h"
-#include "extensions/common/extension_l10n_util.h"
-#include "extensions/common/manifest.h"
-#include "media/base/media.h"
-#include "media/base/media_file_checker.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "third_party/zlib/google/zip.h"
-#include "ui/base/ui_base_switches.h"
#include "ui/gfx/codec/jpeg_codec.h"
-#include "ui/gfx/rect.h"
#include "ui/gfx/size.h"
-#if defined(OS_WIN)
-#include "chrome/common/extensions/api/networking_private/networking_private_crypto.h"
-#include "chrome/utility/media_galleries/itunes_pref_parser_win.h"
-#include "components/wifi/wifi_service.h"
-#endif // defined(OS_WIN)
-
-#if defined(OS_MACOSX)
-#include "chrome/utility/media_galleries/iphoto_library_parser.h"
-#endif // defined(OS_MACOSX)
-
-#if defined(OS_WIN) || defined(OS_MACOSX)
-#include "chrome/utility/media_galleries/iapps_xml_utils.h"
-#include "chrome/utility/media_galleries/itunes_library_parser.h"
-#include "chrome/utility/media_galleries/picasa_album_table_reader.h"
-#include "chrome/utility/media_galleries/picasa_albums_indexer.h"
-#endif // defined(OS_WIN) || defined(OS_MACOSX)
-
-#if !defined(OS_ANDROID) && !defined(OS_IOS)
-#include "chrome/common/media_galleries/metadata_types.h"
-#include "chrome/utility/media_galleries/image_metadata_extractor.h"
+#if !defined(OS_ANDROID)
+#include "chrome/utility/profile_import_handler.h"
+#endif
+
+#if defined(ENABLE_EXTENSIONS)
+#include "chrome/common/extensions/chrome_utility_extensions_messages.h"
+#include "chrome/utility/extensions/extensions_handler.h"
+#include "chrome/utility/image_writer/image_writer_handler.h"
#include "chrome/utility/media_galleries/ipc_data_source.h"
#include "chrome/utility/media_galleries/media_metadata_parser.h"
-#endif // !defined(OS_ANDROID) && !defined(OS_IOS)
+#endif
#if defined(ENABLE_FULL_PRINTING)
#include "chrome/utility/printing_handler.h"
@@ -81,16 +53,16 @@ void ReleaseProcessIfNeeded() {
content::UtilityThread::Get()->ReleaseProcessIfNeeded();
}
-#if !defined(OS_ANDROID) && !defined(OS_IOS)
+#if defined(ENABLE_EXTENSIONS)
void FinishParseMediaMetadata(
- metadata::MediaMetadataParser* parser,
+ metadata::MediaMetadataParser* /* parser */,
const extensions::api::media_galleries::MediaMetadata& metadata,
const std::vector<metadata::AttachedImage>& attached_images) {
Send(new ChromeUtilityHostMsg_ParseMediaMetadata_Finished(
true, *metadata.ToValue(), attached_images));
ReleaseProcessIfNeeded();
}
-#endif // !defined(OS_ANDROID) && !defined(OS_IOS)
+#endif
} // namespace
@@ -100,33 +72,38 @@ ChromeContentUtilityClient::ChromeContentUtilityClient()
handlers_.push_back(new ProfileImportHandler());
#endif
+#if defined(ENABLE_EXTENSIONS)
+ handlers_.push_back(new extensions::ExtensionsHandler());
+ handlers_.push_back(new image_writer::ImageWriterHandler());
+#endif
+
#if defined(ENABLE_FULL_PRINTING)
handlers_.push_back(new PrintingHandler());
#endif
#if defined(ENABLE_MDNS)
- if (CommandLine::ForCurrentProcess()->HasSwitch(
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kUtilityProcessEnableMDns)) {
handlers_.push_back(new local_discovery::ServiceDiscoveryMessageHandler());
}
#endif
-
- handlers_.push_back(new image_writer::ImageWriterHandler());
}
ChromeContentUtilityClient::~ChromeContentUtilityClient() {
}
void ChromeContentUtilityClient::UtilityThreadStarted() {
- CommandLine* command_line = CommandLine::ForCurrentProcess();
- std::string lang = command_line->GetSwitchValueASCII(switches::kLang);
- if (!lang.empty())
- extension_l10n_util::SetProcessLocale(lang);
-
- if (command_line->HasSwitch(switches::kUtilityProcessRunningElevated)) {
- message_id_whitelist_.insert(kMessageWhitelist,
- kMessageWhitelist + kMessageWhitelistSize);
- filter_messages_ = true;
+#if defined(ENABLE_EXTENSIONS)
+ extensions::ExtensionsHandler::UtilityThreadStarted();
+#endif
+
+ if (kMessageWhitelistSize > 0) {
+ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+ if (command_line->HasSwitch(switches::kUtilityProcessRunningElevated)) {
+ message_id_whitelist_.insert(kMessageWhitelist,
+ kMessageWhitelist + kMessageWhitelistSize);
+ filter_messages_ = true;
+ }
}
}
@@ -137,16 +114,11 @@ bool ChromeContentUtilityClient::OnMessageReceived(
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(ChromeContentUtilityClient, message)
- IPC_MESSAGE_HANDLER(ChromeUtilityMsg_UnpackExtension, OnUnpackExtension)
IPC_MESSAGE_HANDLER(ChromeUtilityMsg_UnpackWebResource,
OnUnpackWebResource)
- IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseUpdateManifest,
- OnParseUpdateManifest)
IPC_MESSAGE_HANDLER(ChromeUtilityMsg_DecodeImage, OnDecodeImage)
- IPC_MESSAGE_HANDLER(ChromeUtilityMsg_DecodeImageBase64, OnDecodeImageBase64)
IPC_MESSAGE_HANDLER(ChromeUtilityMsg_RobustJPEGDecodeImage,
OnRobustJPEGDecodeImage)
- IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseJSON, OnParseJSON)
IPC_MESSAGE_HANDLER(ChromeUtilityMsg_PatchFileBsdiff,
OnPatchFileBsdiff)
IPC_MESSAGE_HANDLER(ChromeUtilityMsg_PatchFileCourgette,
@@ -154,41 +126,13 @@ bool ChromeContentUtilityClient::OnMessageReceived(
IPC_MESSAGE_HANDLER(ChromeUtilityMsg_StartupPing, OnStartupPing)
IPC_MESSAGE_HANDLER(ChromeUtilityMsg_AnalyzeZipFileForDownloadProtection,
OnAnalyzeZipFileForDownloadProtection)
-
-#if !defined(OS_ANDROID) && !defined(OS_IOS)
- IPC_MESSAGE_HANDLER(ChromeUtilityMsg_CheckMediaFile, OnCheckMediaFile)
+#if defined(ENABLE_EXTENSIONS)
IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseMediaMetadata,
OnParseMediaMetadata)
-#endif // !defined(OS_ANDROID) && !defined(OS_IOS)
-
+#endif
#if defined(OS_CHROMEOS)
IPC_MESSAGE_HANDLER(ChromeUtilityMsg_CreateZipFile, OnCreateZipFile)
-#endif // defined(OS_CHROMEOS)
-
-#if defined(OS_WIN)
- IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseITunesPrefXml,
- OnParseITunesPrefXml)
-#endif // defined(OS_WIN)
-
-#if defined(OS_MACOSX)
- IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseIPhotoLibraryXmlFile,
- OnParseIPhotoLibraryXmlFile)
-#endif // defined(OS_MACOSX)
-
-#if defined(OS_WIN) || defined(OS_MACOSX)
- IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseITunesLibraryXmlFile,
- OnParseITunesLibraryXmlFile)
- IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParsePicasaPMPDatabase,
- OnParsePicasaPMPDatabase)
- IPC_MESSAGE_HANDLER(ChromeUtilityMsg_IndexPicasaAlbumsContents,
- OnIndexPicasaAlbumsContents)
-#endif // defined(OS_WIN) || defined(OS_MACOSX)
-
-#if defined(OS_WIN)
- IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_GetAndEncryptWiFiCredentials,
- OnGetAndEncryptWiFiCredentials)
-#endif // defined(OS_WIN)
-
+#endif
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
@@ -202,52 +146,33 @@ bool ChromeContentUtilityClient::OnMessageReceived(
// static
void ChromeContentUtilityClient::PreSandboxStartup() {
+#if defined(ENABLE_EXTENSIONS)
+ extensions::ExtensionsHandler::PreSandboxStartup();
+#endif
+
#if defined(ENABLE_FULL_PRINTING)
PrintingHandler::PreSandboxStartup();
#endif
#if defined(ENABLE_MDNS)
- if (CommandLine::ForCurrentProcess()->HasSwitch(
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kUtilityProcessEnableMDns)) {
local_discovery::ServiceDiscoveryMessageHandler::PreSandboxStartup();
}
#endif // ENABLE_MDNS
-
-#if !defined(OS_ANDROID) && !defined(OS_IOS)
- // Initialize libexif for image metadata parsing.
- metadata::ImageMetadataExtractor::InitializeLibrary();
-#endif // !defined(OS_ANDROID) && !defined(OS_IOS)
-
- // Load media libraries for media file validation.
- base::FilePath media_path;
- PathService::Get(content::DIR_MEDIA_LIBS, &media_path);
- if (!media_path.empty())
- media::InitializeMediaLibrary(media_path);
}
-void ChromeContentUtilityClient::OnUnpackExtension(
- const base::FilePath& extension_path,
- const std::string& extension_id,
- int location,
- int creation_flags) {
- CHECK_GT(location, extensions::Manifest::INVALID_LOCATION);
- CHECK_LT(location, extensions::Manifest::NUM_LOCATIONS);
- extensions::ExtensionsClient::Set(
- extensions::ChromeExtensionsClient::GetInstance());
- extensions::Unpacker unpacker(
- extension_path,
- extension_id,
- static_cast<extensions::Manifest::Location>(location),
- creation_flags);
- if (unpacker.Run() && unpacker.DumpImagesToFile() &&
- unpacker.DumpMessageCatalogsToFile()) {
- Send(new ChromeUtilityHostMsg_UnpackExtension_Succeeded(
- *unpacker.parsed_manifest()));
+// static
+void ChromeContentUtilityClient::DecodeImage(
+ const std::vector<unsigned char>& encoded_data) {
+ const SkBitmap& decoded_image = content::DecodeImage(&encoded_data[0],
+ gfx::Size(),
+ encoded_data.size());
+ if (decoded_image.empty()) {
+ Send(new ChromeUtilityHostMsg_DecodeImage_Failed());
} else {
- Send(new ChromeUtilityHostMsg_UnpackExtension_Failed(
- unpacker.error_message()));
+ Send(new ChromeUtilityHostMsg_DecodeImage_Succeeded(decoded_image));
}
-
ReleaseProcessIfNeeded();
}
@@ -268,46 +193,9 @@ void ChromeContentUtilityClient::OnUnpackWebResource(
ReleaseProcessIfNeeded();
}
-void ChromeContentUtilityClient::OnParseUpdateManifest(const std::string& xml) {
- UpdateManifest manifest;
- if (!manifest.Parse(xml)) {
- Send(new ChromeUtilityHostMsg_ParseUpdateManifest_Failed(
- manifest.errors()));
- } else {
- Send(new ChromeUtilityHostMsg_ParseUpdateManifest_Succeeded(
- manifest.results()));
- }
- ReleaseProcessIfNeeded();
-}
-
void ChromeContentUtilityClient::OnDecodeImage(
const std::vector<unsigned char>& encoded_data) {
- const SkBitmap& decoded_image = content::DecodeImage(&encoded_data[0],
- gfx::Size(),
- encoded_data.size());
- if (decoded_image.empty()) {
- Send(new ChromeUtilityHostMsg_DecodeImage_Failed());
- } else {
- Send(new ChromeUtilityHostMsg_DecodeImage_Succeeded(decoded_image));
- }
- ReleaseProcessIfNeeded();
-}
-
-void ChromeContentUtilityClient::OnDecodeImageBase64(
- const std::string& encoded_string) {
- std::string decoded_string;
-
- if (!base::Base64Decode(encoded_string, &decoded_string)) {
- Send(new ChromeUtilityHostMsg_DecodeImage_Failed());
- return;
- }
-
- std::vector<unsigned char> decoded_vector(decoded_string.size());
- for (size_t i = 0; i < decoded_string.size(); ++i) {
- decoded_vector[i] = static_cast<unsigned char>(decoded_string[i]);
- }
-
- OnDecodeImage(decoded_vector);
+ DecodeImage(encoded_data);
}
#if defined(OS_CHROMEOS)
@@ -356,21 +244,6 @@ void ChromeContentUtilityClient::OnRobustJPEGDecodeImage(
ReleaseProcessIfNeeded();
}
-void ChromeContentUtilityClient::OnParseJSON(const std::string& json) {
- int error_code;
- std::string error;
- base::Value* value = base::JSONReader::ReadAndReturnError(
- json, base::JSON_PARSE_RFC, &error_code, &error);
- if (value) {
- base::ListValue wrapper;
- wrapper.Append(value);
- Send(new ChromeUtilityHostMsg_ParseJSON_Succeeded(wrapper));
- } else {
- Send(new ChromeUtilityHostMsg_ParseJSON_Failed(error));
- }
- ReleaseProcessIfNeeded();
-}
-
void ChromeContentUtilityClient::OnPatchFileBsdiff(
const base::FilePath& input_file,
const base::FilePath& patch_file,
@@ -423,18 +296,9 @@ void ChromeContentUtilityClient::OnAnalyzeZipFileForDownloadProtection(
ReleaseProcessIfNeeded();
}
-#if !defined(OS_ANDROID) && !defined(OS_IOS)
-void ChromeContentUtilityClient::OnCheckMediaFile(
- int64 milliseconds_of_decoding,
- const IPC::PlatformFileForTransit& media_file) {
- media::MediaFileChecker checker(
- IPC::PlatformFileForTransitToFile(media_file));
- const bool check_success = checker.Start(
- base::TimeDelta::FromMilliseconds(milliseconds_of_decoding));
- Send(new ChromeUtilityHostMsg_CheckMediaFile_Finished(check_success));
- ReleaseProcessIfNeeded();
-}
-
+#if defined(ENABLE_EXTENSIONS)
+// TODO(thestig): Try to move this to
+// chrome/utility/extensions/extensions_handler.cc.
void ChromeContentUtilityClient::OnParseMediaMetadata(
const std::string& mime_type, int64 total_size, bool get_attached_images) {
// Only one IPCDataSource may be created and added to the list of handlers.
@@ -445,97 +309,4 @@ void ChromeContentUtilityClient::OnParseMediaMetadata(
source, mime_type, get_attached_images);
parser->Start(base::Bind(&FinishParseMediaMetadata, base::Owned(parser)));
}
-#endif // !defined(OS_ANDROID) && !defined(OS_IOS)
-
-#if defined(OS_WIN)
-void ChromeContentUtilityClient::OnParseITunesPrefXml(
- const std::string& itunes_xml_data) {
- base::FilePath library_path(
- itunes::FindLibraryLocationInPrefXml(itunes_xml_data));
- Send(new ChromeUtilityHostMsg_GotITunesDirectory(library_path));
- ReleaseProcessIfNeeded();
-}
-#endif // defined(OS_WIN)
-
-#if defined(OS_MACOSX)
-void ChromeContentUtilityClient::OnParseIPhotoLibraryXmlFile(
- const IPC::PlatformFileForTransit& iphoto_library_file) {
- iphoto::IPhotoLibraryParser parser;
- base::File file = IPC::PlatformFileForTransitToFile(iphoto_library_file);
- bool result = parser.Parse(iapps::ReadFileAsString(file.Pass()));
- Send(new ChromeUtilityHostMsg_GotIPhotoLibrary(result, parser.library()));
- ReleaseProcessIfNeeded();
-}
-#endif // defined(OS_MACOSX)
-
-#if defined(OS_WIN) || defined(OS_MACOSX)
-void ChromeContentUtilityClient::OnParseITunesLibraryXmlFile(
- const IPC::PlatformFileForTransit& itunes_library_file) {
- itunes::ITunesLibraryParser parser;
- base::File file = IPC::PlatformFileForTransitToFile(itunes_library_file);
- bool result = parser.Parse(iapps::ReadFileAsString(file.Pass()));
- Send(new ChromeUtilityHostMsg_GotITunesLibrary(result, parser.library()));
- ReleaseProcessIfNeeded();
-}
-
-void ChromeContentUtilityClient::OnParsePicasaPMPDatabase(
- const picasa::AlbumTableFilesForTransit& album_table_files) {
- picasa::AlbumTableFiles files;
- files.indicator_file =
- IPC::PlatformFileForTransitToFile(album_table_files.indicator_file);
- files.category_file =
- IPC::PlatformFileForTransitToFile(album_table_files.category_file);
- files.date_file =
- IPC::PlatformFileForTransitToFile(album_table_files.date_file);
- files.filename_file =
- IPC::PlatformFileForTransitToFile(album_table_files.filename_file);
- files.name_file =
- IPC::PlatformFileForTransitToFile(album_table_files.name_file);
- files.token_file =
- IPC::PlatformFileForTransitToFile(album_table_files.token_file);
- files.uid_file =
- IPC::PlatformFileForTransitToFile(album_table_files.uid_file);
-
- picasa::PicasaAlbumTableReader reader(files.Pass());
- bool parse_success = reader.Init();
- Send(new ChromeUtilityHostMsg_ParsePicasaPMPDatabase_Finished(
- parse_success,
- reader.albums(),
- reader.folders()));
- ReleaseProcessIfNeeded();
-}
-
-void ChromeContentUtilityClient::OnIndexPicasaAlbumsContents(
- const picasa::AlbumUIDSet& album_uids,
- const std::vector<picasa::FolderINIContents>& folders_inis) {
- picasa::PicasaAlbumsIndexer indexer(album_uids);
- indexer.ParseFolderINI(folders_inis);
-
- Send(new ChromeUtilityHostMsg_IndexPicasaAlbumsContents_Finished(
- indexer.albums_images()));
- ReleaseProcessIfNeeded();
-}
-#endif // defined(OS_WIN) || defined(OS_MACOSX)
-
-#if defined(OS_WIN)
-void ChromeContentUtilityClient::OnGetAndEncryptWiFiCredentials(
- const std::string& network_guid,
- const std::vector<uint8>& public_key) {
- scoped_ptr<wifi::WiFiService> wifi_service(wifi::WiFiService::Create());
- wifi_service->Initialize(NULL);
-
- std::string key_data;
- std::string error;
- wifi_service->GetKeyFromSystem(network_guid, &key_data, &error);
-
- std::vector<uint8> ciphertext;
- bool success = error.empty() && !key_data.empty();
- if (success) {
- NetworkingPrivateCrypto crypto;
- success = crypto.EncryptByteString(public_key, key_data, &ciphertext);
- }
-
- Send(new ChromeUtilityHostMsg_GotEncryptedWiFiCredentials(ciphertext,
- success));
-}
-#endif // defined(OS_WIN)
+#endif
« no previous file with comments | « chrome/utility/chrome_content_utility_client.h ('k') | chrome/utility/chrome_content_utility_ipc_whitelist.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698