| 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 // Implements the Chrome Extensions Media Galleries API. | 5 // Implements the Chrome Extensions Media Galleries API. |
| 6 | 6 |
| 7 #include "chrome/browser/extensions/api/media_galleries/media_galleries_api.h" | 7 #include "chrome/browser/extensions/api/media_galleries/media_galleries_api.h" |
| 8 | 8 |
| 9 #include <stddef.h> | 9 #include <stddef.h> |
| 10 | 10 |
| (...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 657 SendResponse(false); | 657 SendResponse(false); |
| 658 return; | 658 return; |
| 659 } | 659 } |
| 660 | 660 |
| 661 if (metadata_type == MediaGalleries::GET_METADATA_TYPE_MIMETYPEONLY) { | 661 if (metadata_type == MediaGalleries::GET_METADATA_TYPE_MIMETYPEONLY) { |
| 662 MediaGalleries::MediaMetadata metadata; | 662 MediaGalleries::MediaMetadata metadata; |
| 663 metadata.mime_type = mime_type; | 663 metadata.mime_type = mime_type; |
| 664 | 664 |
| 665 std::unique_ptr<base::DictionaryValue> result_dictionary( | 665 std::unique_ptr<base::DictionaryValue> result_dictionary( |
| 666 new base::DictionaryValue); | 666 new base::DictionaryValue); |
| 667 result_dictionary->Set(kMetadataKey, metadata.ToValue().release()); | 667 result_dictionary->Set(kMetadataKey, metadata.ToValue()); |
| 668 SetResult(std::move(result_dictionary)); | 668 SetResult(std::move(result_dictionary)); |
| 669 SendResponse(true); | 669 SendResponse(true); |
| 670 return; | 670 return; |
| 671 } | 671 } |
| 672 | 672 |
| 673 // We get attached images by default. GET_METADATA_TYPE_NONE is the default | 673 // We get attached images by default. GET_METADATA_TYPE_NONE is the default |
| 674 // value if the caller doesn't specify the metadata type. | 674 // value if the caller doesn't specify the metadata type. |
| 675 bool get_attached_images = | 675 bool get_attached_images = |
| 676 metadata_type == MediaGalleries::GET_METADATA_TYPE_ALL || | 676 metadata_type == MediaGalleries::GET_METADATA_TYPE_ALL || |
| 677 metadata_type == MediaGalleries::GET_METADATA_TYPE_NONE; | 677 metadata_type == MediaGalleries::GET_METADATA_TYPE_NONE; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 693 if (!parse_success) { | 693 if (!parse_success) { |
| 694 SendResponse(false); | 694 SendResponse(false); |
| 695 return; | 695 return; |
| 696 } | 696 } |
| 697 | 697 |
| 698 DCHECK(metadata_dictionary.get()); | 698 DCHECK(metadata_dictionary.get()); |
| 699 DCHECK(attached_images.get()); | 699 DCHECK(attached_images.get()); |
| 700 | 700 |
| 701 std::unique_ptr<base::DictionaryValue> result_dictionary( | 701 std::unique_ptr<base::DictionaryValue> result_dictionary( |
| 702 new base::DictionaryValue); | 702 new base::DictionaryValue); |
| 703 result_dictionary->Set(kMetadataKey, metadata_dictionary.release()); | 703 result_dictionary->Set(kMetadataKey, std::move(metadata_dictionary)); |
| 704 | 704 |
| 705 if (attached_images->empty()) { | 705 if (attached_images->empty()) { |
| 706 SetResult(std::move(result_dictionary)); | 706 SetResult(std::move(result_dictionary)); |
| 707 SendResponse(true); | 707 SendResponse(true); |
| 708 return; | 708 return; |
| 709 } | 709 } |
| 710 | 710 |
| 711 result_dictionary->Set(kAttachedImagesBlobInfoKey, new base::ListValue); | 711 result_dictionary->Set(kAttachedImagesBlobInfoKey, |
| 712 base::MakeUnique<base::ListValue>()); |
| 712 metadata::AttachedImage* first_image = &attached_images->front(); | 713 metadata::AttachedImage* first_image = &attached_images->front(); |
| 713 content::BrowserContext::CreateMemoryBackedBlob( | 714 content::BrowserContext::CreateMemoryBackedBlob( |
| 714 GetProfile(), first_image->data.c_str(), first_image->data.size(), | 715 GetProfile(), first_image->data.c_str(), first_image->data.size(), |
| 715 base::Bind(&MediaGalleriesGetMetadataFunction::ConstructNextBlob, this, | 716 base::Bind(&MediaGalleriesGetMetadataFunction::ConstructNextBlob, this, |
| 716 base::Passed(&result_dictionary), | 717 base::Passed(&result_dictionary), |
| 717 base::Passed(&attached_images), | 718 base::Passed(&attached_images), |
| 718 base::Passed(base::WrapUnique(new std::vector<std::string>)))); | 719 base::Passed(base::WrapUnique(new std::vector<std::string>)))); |
| 719 } | 720 } |
| 720 | 721 |
| 721 void MediaGalleriesGetMetadataFunction::ConstructNextBlob( | 722 void MediaGalleriesGetMetadataFunction::ConstructNextBlob( |
| (...skipping 14 matching lines...) Expand all Loading... |
| 736 // For the newly constructed Blob, store its image's metadata and Blob UUID. | 737 // For the newly constructed Blob, store its image's metadata and Blob UUID. |
| 737 base::ListValue* attached_images_list = NULL; | 738 base::ListValue* attached_images_list = NULL; |
| 738 result_dictionary->GetList(kAttachedImagesBlobInfoKey, &attached_images_list); | 739 result_dictionary->GetList(kAttachedImagesBlobInfoKey, &attached_images_list); |
| 739 DCHECK(attached_images_list); | 740 DCHECK(attached_images_list); |
| 740 DCHECK_LT(attached_images_list->GetSize(), attached_images->size()); | 741 DCHECK_LT(attached_images_list->GetSize(), attached_images->size()); |
| 741 | 742 |
| 742 metadata::AttachedImage* current_image = | 743 metadata::AttachedImage* current_image = |
| 743 &(*attached_images)[blob_uuids->size()]; | 744 &(*attached_images)[blob_uuids->size()]; |
| 744 std::unique_ptr<base::DictionaryValue> attached_image( | 745 std::unique_ptr<base::DictionaryValue> attached_image( |
| 745 new base::DictionaryValue); | 746 new base::DictionaryValue); |
| 746 attached_image->Set(kBlobUUIDKey, new base::Value(current_blob->GetUUID())); | 747 attached_image->SetString(kBlobUUIDKey, current_blob->GetUUID()); |
| 747 attached_image->Set(kTypeKey, new base::Value(current_image->type)); | 748 attached_image->SetString(kTypeKey, current_image->type); |
| 748 attached_image->Set( | 749 attached_image->SetInteger( |
| 749 kSizeKey, | 750 kSizeKey, base::checked_cast<int>(current_image->data.size())); |
| 750 new base::Value(base::checked_cast<int>(current_image->data.size()))); | |
| 751 attached_images_list->Append(std::move(attached_image)); | 751 attached_images_list->Append(std::move(attached_image)); |
| 752 | 752 |
| 753 blob_uuids->push_back(current_blob->GetUUID()); | 753 blob_uuids->push_back(current_blob->GetUUID()); |
| 754 | 754 |
| 755 content::RenderProcessHost* render_process_host = | 755 content::RenderProcessHost* render_process_host = |
| 756 render_frame_host()->GetProcess(); | 756 render_frame_host()->GetProcess(); |
| 757 if (!render_process_host) { | 757 if (!render_process_host) { |
| 758 SendResponse(false); | 758 SendResponse(false); |
| 759 return; | 759 return; |
| 760 } | 760 } |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 907 SendResponse(false); | 907 SendResponse(false); |
| 908 return; | 908 return; |
| 909 } | 909 } |
| 910 | 910 |
| 911 gallery_watch_manager()->RemoveWatch( | 911 gallery_watch_manager()->RemoveWatch( |
| 912 GetProfile(), extension_id(), gallery_pref_id); | 912 GetProfile(), extension_id(), gallery_pref_id); |
| 913 SendResponse(true); | 913 SendResponse(true); |
| 914 } | 914 } |
| 915 | 915 |
| 916 } // namespace extensions | 916 } // namespace extensions |
| OLD | NEW |