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 48acaa94ea95781f133a9d6958c52b39b8c47a53..cc5accf84d61cf4873a0797e03d24867e02d89c4 100644 |
--- a/chrome/utility/chrome_content_utility_client.cc |
+++ b/chrome/utility/chrome_content_utility_client.cc |
@@ -11,7 +11,6 @@ |
#include "base/files/file_path.h" |
#include "base/json/json_reader.h" |
#include "base/memory/ref_counted.h" |
-#include "base/memory/scoped_ptr.h" |
#include "base/path_service.h" |
#include "base/scoped_native_library.h" |
#include "base/time/time.h" |
@@ -61,6 +60,11 @@ |
#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/utility/media_galleries/ipc_tunnel_data_reader.h" |
+#include "chrome/utility/media_galleries/media_metadata_parser.h" |
+#endif // !defined(OS_ANDROID) && !defined(OS_IOS) |
+ |
#if defined(ENABLE_FULL_PRINTING) |
#include "chrome/common/crash_keys.h" |
#include "printing/backend/print_backend.h" |
@@ -289,11 +293,21 @@ typedef PdfFunctionsWin PdfFunctions; |
typedef PdfFunctionsBase PdfFunctions; |
#endif // OS_WIN |
+void SendMediaMetadataToHost( |
+ scoped_ptr<extensions::api::media_galleries::MediaMetadata> metadata) { |
+ Send(new ChromeUtilityHostMsg_ParseMediaMetadata_Finished( |
+ true, *(metadata->ToValue().get()))); |
+} |
+ |
static base::LazyInstance<PdfFunctions> g_pdf_lib = LAZY_INSTANCE_INITIALIZER; |
} // namespace |
-ChromeContentUtilityClient::ChromeContentUtilityClient() { |
+ChromeContentUtilityClient::ChromeContentUtilityClient() |
+#ifdef !defined(OS_ANDROID) && !defined(OS_IOS) |
+ : ipc_tunnel_data_reader_(NULL) |
+#endif // !defined(OS_ANDROID) && !defined(OS_IOS) |
+{ |
#if !defined(OS_ANDROID) |
handlers_.push_back(new ProfileImportHandler()); |
#endif // OS_ANDROID |
@@ -342,6 +356,11 @@ bool ChromeContentUtilityClient::OnMessageReceived( |
#if !defined(OS_ANDROID) && !defined(OS_IOS) |
IPC_MESSAGE_HANDLER(ChromeUtilityMsg_CheckMediaFile, OnCheckMediaFile) |
+ IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseMediaMetadata, |
+ OnParseMediaMetadata) |
+ IPC_MESSAGE_HANDLER( |
+ ChromeUtilityMsg_ParseMediaMetadata_RequestBlobBytes_Finished, |
+ OnParseMediaMetadataRequestBlobBytesFinished) |
#endif // !defined(OS_ANDROID) && !defined(OS_IOS) |
#if defined(OS_CHROMEOS) |
@@ -759,6 +778,25 @@ void ChromeContentUtilityClient::OnCheckMediaFile( |
Send(new ChromeUtilityHostMsg_CheckMediaFile_Finished(check_success)); |
ReleaseProcessIfNeeded(); |
} |
+ |
+void ChromeContentUtilityClient::OnParseMediaMetadata( |
+ const std::string& mime_type) { |
+ DCHECK(!media_metadata_parser_); |
+ DCHECK(!ipc_tunnel_data_reader_); |
+ |
+ ipc_tunnel_data_reader_ = new metadata::IPCTunnelDataReader; |
+ media_metadata_parser_.reset( |
+ new metadata::MediaMetadataParser(ipc_tunnel_data_reader_, mime_type)); |
+ media_metadata_parser_->Start(base::Bind(&SendMediaMetadataToHost)); |
+} |
+ |
+void ChromeContentUtilityClient::OnParseMediaMetadataRequestBlobBytesFinished( |
+ int64 request_id, |
+ const std::string& bytes) { |
+ if (!ipc_tunnel_data_reader_) |
+ return; |
+ ipc_tunnel_data_reader_->ReceiveBytes(request_id, bytes); |
+} |
#endif // !defined(OS_ANDROID) && !defined(OS_IOS) |
#if defined(OS_WIN) |