OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/common/extensions/api/media_galleries_private/media_galleries_h
andler.h" | 5 #include "chrome/common/extensions/api/media_galleries_private/media_galleries_h
andler.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 26 matching lines...) Expand all Loading... |
37 const std::string& extension_id, | 37 const std::string& extension_id, |
38 const base::DictionaryValue* media_galleries_handler, | 38 const base::DictionaryValue* media_galleries_handler, |
39 base::string16* error) { | 39 base::string16* error) { |
40 scoped_ptr<MediaGalleriesHandler> result(new MediaGalleriesHandler()); | 40 scoped_ptr<MediaGalleriesHandler> result(new MediaGalleriesHandler()); |
41 result->set_extension_id(extension_id); | 41 result->set_extension_id(extension_id); |
42 | 42 |
43 std::string handler_id; | 43 std::string handler_id; |
44 // Read the file action |id| (mandatory). | 44 // Read the file action |id| (mandatory). |
45 if (!media_galleries_handler->HasKey(keys::kPageActionId) || | 45 if (!media_galleries_handler->HasKey(keys::kPageActionId) || |
46 !media_galleries_handler->GetString(keys::kPageActionId, &handler_id)) { | 46 !media_galleries_handler->GetString(keys::kPageActionId, &handler_id)) { |
47 *error = ASCIIToUTF16(errors::kInvalidPageActionId); | 47 *error = base::ASCIIToUTF16(errors::kInvalidPageActionId); |
48 return NULL; | 48 return NULL; |
49 } | 49 } |
50 result->set_id(handler_id); | 50 result->set_id(handler_id); |
51 | 51 |
52 // Read the page action title from |default_title| (mandatory). | 52 // Read the page action title from |default_title| (mandatory). |
53 std::string title; | 53 std::string title; |
54 if (!media_galleries_handler->HasKey(keys::kPageActionDefaultTitle) || | 54 if (!media_galleries_handler->HasKey(keys::kPageActionDefaultTitle) || |
55 !media_galleries_handler->GetString(keys::kPageActionDefaultTitle, | 55 !media_galleries_handler->GetString(keys::kPageActionDefaultTitle, |
56 &title)) { | 56 &title)) { |
57 *error = ASCIIToUTF16(errors::kInvalidPageActionDefaultTitle); | 57 *error = base::ASCIIToUTF16(errors::kInvalidPageActionDefaultTitle); |
58 return NULL; | 58 return NULL; |
59 } | 59 } |
60 result->set_title(title); | 60 result->set_title(title); |
61 | 61 |
62 std::string default_icon; | 62 std::string default_icon; |
63 // Read the media galleries action |default_icon| (optional). | 63 // Read the media galleries action |default_icon| (optional). |
64 if (media_galleries_handler->HasKey(keys::kPageActionDefaultIcon)) { | 64 if (media_galleries_handler->HasKey(keys::kPageActionDefaultIcon)) { |
65 if (!media_galleries_handler->GetString( | 65 if (!media_galleries_handler->GetString( |
66 keys::kPageActionDefaultIcon, &default_icon) || | 66 keys::kPageActionDefaultIcon, &default_icon) || |
67 default_icon.empty()) { | 67 default_icon.empty()) { |
68 *error = ASCIIToUTF16(errors::kInvalidPageActionIconPath); | 68 *error = base::ASCIIToUTF16(errors::kInvalidPageActionIconPath); |
69 return NULL; | 69 return NULL; |
70 } | 70 } |
71 result->set_icon_path(default_icon); | 71 result->set_icon_path(default_icon); |
72 } | 72 } |
73 | 73 |
74 return result.release(); | 74 return result.release(); |
75 } | 75 } |
76 | 76 |
77 // Loads MediaGalleriesHandlers from |extension_actions| into a list in | 77 // Loads MediaGalleriesHandlers from |extension_actions| into a list in |
78 // |result|. | 78 // |result|. |
79 bool LoadMediaGalleriesHandlers( | 79 bool LoadMediaGalleriesHandlers( |
80 const std::string& extension_id, | 80 const std::string& extension_id, |
81 const base::ListValue* extension_actions, | 81 const base::ListValue* extension_actions, |
82 MediaGalleriesHandler::List* result, | 82 MediaGalleriesHandler::List* result, |
83 base::string16* error) { | 83 base::string16* error) { |
84 for (base::ListValue::const_iterator iter = extension_actions->begin(); | 84 for (base::ListValue::const_iterator iter = extension_actions->begin(); |
85 iter != extension_actions->end(); | 85 iter != extension_actions->end(); |
86 ++iter) { | 86 ++iter) { |
87 if (!(*iter)->IsType(base::Value::TYPE_DICTIONARY)) { | 87 if (!(*iter)->IsType(base::Value::TYPE_DICTIONARY)) { |
88 *error = ASCIIToUTF16(errors::kInvalidMediaGalleriesHandler); | 88 *error = base::ASCIIToUTF16(errors::kInvalidMediaGalleriesHandler); |
89 return false; | 89 return false; |
90 } | 90 } |
91 scoped_ptr<MediaGalleriesHandler> action( | 91 scoped_ptr<MediaGalleriesHandler> action( |
92 LoadMediaGalleriesHandler( | 92 LoadMediaGalleriesHandler( |
93 extension_id, | 93 extension_id, |
94 reinterpret_cast<base::DictionaryValue*>(*iter), error)); | 94 reinterpret_cast<base::DictionaryValue*>(*iter), error)); |
95 if (!action) | 95 if (!action) |
96 return false; // Failed to parse media galleries action definition. | 96 return false; // Failed to parse media galleries action definition. |
97 result->push_back(linked_ptr<MediaGalleriesHandler>(action.release())); | 97 result->push_back(linked_ptr<MediaGalleriesHandler>(action.release())); |
98 } | 98 } |
(...skipping 22 matching lines...) Expand all Loading... |
121 } | 121 } |
122 | 122 |
123 MediaGalleriesHandlerParser::~MediaGalleriesHandlerParser() { | 123 MediaGalleriesHandlerParser::~MediaGalleriesHandlerParser() { |
124 } | 124 } |
125 | 125 |
126 bool MediaGalleriesHandlerParser::Parse(extensions::Extension* extension, | 126 bool MediaGalleriesHandlerParser::Parse(extensions::Extension* extension, |
127 base::string16* error) { | 127 base::string16* error) { |
128 const base::ListValue* media_galleries_handlers_value = NULL; | 128 const base::ListValue* media_galleries_handlers_value = NULL; |
129 if (!extension->manifest()->GetList(keys::kMediaGalleriesHandlers, | 129 if (!extension->manifest()->GetList(keys::kMediaGalleriesHandlers, |
130 &media_galleries_handlers_value)) { | 130 &media_galleries_handlers_value)) { |
131 *error = ASCIIToUTF16(errors::kInvalidMediaGalleriesHandler); | 131 *error = base::ASCIIToUTF16(errors::kInvalidMediaGalleriesHandler); |
132 return false; | 132 return false; |
133 } | 133 } |
134 scoped_ptr<MediaGalleriesHandlerInfo> info(new MediaGalleriesHandlerInfo); | 134 scoped_ptr<MediaGalleriesHandlerInfo> info(new MediaGalleriesHandlerInfo); |
135 if (!LoadMediaGalleriesHandlers(extension->id(), | 135 if (!LoadMediaGalleriesHandlers(extension->id(), |
136 media_galleries_handlers_value, | 136 media_galleries_handlers_value, |
137 &info->media_galleries_handlers, | 137 &info->media_galleries_handlers, |
138 error)) { | 138 error)) { |
139 return false; // Failed to parse media galleries actions definition. | 139 return false; // Failed to parse media galleries actions definition. |
140 } | 140 } |
141 | 141 |
142 extension->SetManifestData(keys::kMediaGalleriesHandlers, info.release()); | 142 extension->SetManifestData(keys::kMediaGalleriesHandlers, info.release()); |
143 return true; | 143 return true; |
144 } | 144 } |
145 | 145 |
146 const std::vector<std::string> MediaGalleriesHandlerParser::Keys() const { | 146 const std::vector<std::string> MediaGalleriesHandlerParser::Keys() const { |
147 return SingleKey(keys::kMediaGalleriesHandlers); | 147 return SingleKey(keys::kMediaGalleriesHandlers); |
148 } | 148 } |
OLD | NEW |