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/file_browser_handlers/file_browser_handle
r.h" | 5 #include "chrome/common/extensions/api/file_browser_handlers/file_browser_handle
r.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 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 } | 126 } |
127 | 127 |
128 FileBrowserHandlerParser::~FileBrowserHandlerParser() { | 128 FileBrowserHandlerParser::~FileBrowserHandlerParser() { |
129 } | 129 } |
130 | 130 |
131 namespace { | 131 namespace { |
132 | 132 |
133 FileBrowserHandler* LoadFileBrowserHandler( | 133 FileBrowserHandler* LoadFileBrowserHandler( |
134 const std::string& extension_id, | 134 const std::string& extension_id, |
135 const DictionaryValue* file_browser_handler, | 135 const DictionaryValue* file_browser_handler, |
136 string16* error) { | 136 base::string16* error) { |
137 scoped_ptr<FileBrowserHandler> result(new FileBrowserHandler()); | 137 scoped_ptr<FileBrowserHandler> result(new FileBrowserHandler()); |
138 result->set_extension_id(extension_id); | 138 result->set_extension_id(extension_id); |
139 | 139 |
140 std::string handler_id; | 140 std::string handler_id; |
141 // Read the file action |id| (mandatory). | 141 // Read the file action |id| (mandatory). |
142 if (!file_browser_handler->HasKey(keys::kPageActionId) || | 142 if (!file_browser_handler->HasKey(keys::kPageActionId) || |
143 !file_browser_handler->GetString(keys::kPageActionId, &handler_id)) { | 143 !file_browser_handler->GetString(keys::kPageActionId, &handler_id)) { |
144 *error = ASCIIToUTF16(errors::kInvalidPageActionId); | 144 *error = ASCIIToUTF16(errors::kInvalidPageActionId); |
145 return NULL; | 145 return NULL; |
146 } | 146 } |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 } | 238 } |
239 | 239 |
240 return result.release(); | 240 return result.release(); |
241 } | 241 } |
242 | 242 |
243 // Loads FileBrowserHandlers from |extension_actions| into a list in |result|. | 243 // Loads FileBrowserHandlers from |extension_actions| into a list in |result|. |
244 bool LoadFileBrowserHandlers( | 244 bool LoadFileBrowserHandlers( |
245 const std::string& extension_id, | 245 const std::string& extension_id, |
246 const ListValue* extension_actions, | 246 const ListValue* extension_actions, |
247 FileBrowserHandler::List* result, | 247 FileBrowserHandler::List* result, |
248 string16* error) { | 248 base::string16* error) { |
249 for (ListValue::const_iterator iter = extension_actions->begin(); | 249 for (ListValue::const_iterator iter = extension_actions->begin(); |
250 iter != extension_actions->end(); | 250 iter != extension_actions->end(); |
251 ++iter) { | 251 ++iter) { |
252 if (!(*iter)->IsType(Value::TYPE_DICTIONARY)) { | 252 if (!(*iter)->IsType(Value::TYPE_DICTIONARY)) { |
253 *error = ASCIIToUTF16(errors::kInvalidFileBrowserHandler); | 253 *error = ASCIIToUTF16(errors::kInvalidFileBrowserHandler); |
254 return false; | 254 return false; |
255 } | 255 } |
256 scoped_ptr<FileBrowserHandler> action( | 256 scoped_ptr<FileBrowserHandler> action( |
257 LoadFileBrowserHandler( | 257 LoadFileBrowserHandler( |
258 extension_id, reinterpret_cast<DictionaryValue*>(*iter), error)); | 258 extension_id, reinterpret_cast<DictionaryValue*>(*iter), error)); |
259 if (!action.get()) | 259 if (!action.get()) |
260 return false; // Failed to parse file browser action definition. | 260 return false; // Failed to parse file browser action definition. |
261 result->push_back(linked_ptr<FileBrowserHandler>(action.release())); | 261 result->push_back(linked_ptr<FileBrowserHandler>(action.release())); |
262 } | 262 } |
263 return true; | 263 return true; |
264 } | 264 } |
265 | 265 |
266 } // namespace | 266 } // namespace |
267 | 267 |
268 bool FileBrowserHandlerParser::Parse(extensions::Extension* extension, | 268 bool FileBrowserHandlerParser::Parse(extensions::Extension* extension, |
269 string16* error) { | 269 base::string16* error) { |
270 const ListValue* file_browser_handlers_value = NULL; | 270 const ListValue* file_browser_handlers_value = NULL; |
271 if (!extension->manifest()->GetList(keys::kFileBrowserHandlers, | 271 if (!extension->manifest()->GetList(keys::kFileBrowserHandlers, |
272 &file_browser_handlers_value)) { | 272 &file_browser_handlers_value)) { |
273 *error = ASCIIToUTF16(errors::kInvalidFileBrowserHandler); | 273 *error = ASCIIToUTF16(errors::kInvalidFileBrowserHandler); |
274 return false; | 274 return false; |
275 } | 275 } |
276 scoped_ptr<FileBrowserHandlerInfo> info(new FileBrowserHandlerInfo); | 276 scoped_ptr<FileBrowserHandlerInfo> info(new FileBrowserHandlerInfo); |
277 if (!LoadFileBrowserHandlers(extension->id(), | 277 if (!LoadFileBrowserHandlers(extension->id(), |
278 file_browser_handlers_value, | 278 file_browser_handlers_value, |
279 &info->file_browser_handlers, | 279 &info->file_browser_handlers, |
280 error)) { | 280 error)) { |
281 return false; // Failed to parse file browser actions definition. | 281 return false; // Failed to parse file browser actions definition. |
282 } | 282 } |
283 | 283 |
284 extension->SetManifestData(keys::kFileBrowserHandlers, info.release()); | 284 extension->SetManifestData(keys::kFileBrowserHandlers, info.release()); |
285 return true; | 285 return true; |
286 } | 286 } |
287 | 287 |
288 const std::vector<std::string> FileBrowserHandlerParser::Keys() const { | 288 const std::vector<std::string> FileBrowserHandlerParser::Keys() const { |
289 return SingleKey(keys::kFileBrowserHandlers); | 289 return SingleKey(keys::kFileBrowserHandlers); |
290 } | 290 } |
OLD | NEW |