Index: chrome/browser/media_galleries/fileapi/safe_media_metadata_parser.cc |
diff --git a/chrome/browser/media_galleries/fileapi/safe_media_metadata_parser.cc b/chrome/browser/media_galleries/fileapi/safe_media_metadata_parser.cc |
index 7bf23e3c6c8b7d6a661c63c17722660015aedaac..30447d693d94e8acec08266c5388325e32ccd477 100644 |
--- a/chrome/browser/media_galleries/fileapi/safe_media_metadata_parser.cc |
+++ b/chrome/browser/media_galleries/fileapi/safe_media_metadata_parser.cc |
@@ -14,14 +14,14 @@ using content::BrowserThread; |
namespace metadata { |
-SafeMediaMetadataParser::SafeMediaMetadataParser(Profile* profile, |
- const std::string& blob_uuid, |
- int64 blob_size, |
- const std::string& mime_type) |
+SafeMediaMetadataParser::SafeMediaMetadataParser( |
+ Profile* profile, const std::string& blob_uuid, int64 blob_size, |
+ const std::string& mime_type, bool get_attached_images) |
: profile_(profile), |
blob_uuid_(blob_uuid), |
blob_size_(blob_size), |
mime_type_(mime_type), |
+ get_attached_images_(get_attached_images), |
parser_state_(INITIAL_STATE) { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
} |
@@ -51,24 +51,33 @@ void SafeMediaMetadataParser::StartWorkOnIOThread( |
this, base::MessageLoopProxy::current())->AsWeakPtr(); |
utility_process_host_->Send( |
- new ChromeUtilityMsg_ParseMediaMetadata(mime_type_, blob_size_)); |
+ new ChromeUtilityMsg_ParseMediaMetadata(mime_type_, blob_size_, |
+ get_attached_images_)); |
parser_state_ = STARTED_PARSING_STATE; |
} |
void SafeMediaMetadataParser::OnParseMediaMetadataFinished( |
- bool parse_success, const base::DictionaryValue& metadata_dictionary) { |
+ bool parse_success, const base::DictionaryValue& metadata_dictionary, |
+ const std::vector<AttachedImage>& attached_images) { |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
DCHECK(!callback_.is_null()); |
if (parser_state_ != STARTED_PARSING_STATE) |
return; |
+ // We need to make a scoped copy of this vector since it will be destroyed |
+ // at the end of the IPC message handler. |
+ scoped_ptr<std::vector<metadata::AttachedImage>> attached_images_scoped = |
+ make_scoped_ptr(new std::vector<metadata::AttachedImage>( |
+ attached_images)); |
+ |
BrowserThread::PostTask( |
BrowserThread::UI, |
FROM_HERE, |
base::Bind(callback_, parse_success, |
- base::Owned(metadata_dictionary.DeepCopy()))); |
+ base::Passed(make_scoped_ptr(metadata_dictionary.DeepCopy())), |
+ base::Passed(&attached_images_scoped))); |
parser_state_ = FINISHED_PARSING_STATE; |
} |
@@ -120,7 +129,9 @@ void SafeMediaMetadataParser::OnProcessCrashed(int exit_code) { |
BrowserThread::PostTask( |
BrowserThread::UI, |
FROM_HERE, |
- base::Bind(callback_, false, base::Owned(new base::DictionaryValue))); |
+ base::Bind(callback_, false, |
+ base::Passed(scoped_ptr<base::DictionaryValue>()), |
+ base::Passed(scoped_ptr<std::vector<AttachedImage>>()))); |
parser_state_ = FINISHED_PARSING_STATE; |
} |