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 <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
| 9 #include <memory> |
| 10 |
9 #include "base/logging.h" | 11 #include "base/logging.h" |
10 #include "base/strings/string_number_conversions.h" | 12 #include "base/strings/string_number_conversions.h" |
11 #include "base/strings/string_util.h" | 13 #include "base/strings/string_util.h" |
12 #include "base/strings/utf_string_conversions.h" | 14 #include "base/strings/utf_string_conversions.h" |
13 #include "base/values.h" | 15 #include "base/values.h" |
14 #include "chrome/common/extensions/extension_constants.h" | 16 #include "chrome/common/extensions/extension_constants.h" |
15 #include "extensions/common/error_utils.h" | 17 #include "extensions/common/error_utils.h" |
16 #include "extensions/common/install_warning.h" | 18 #include "extensions/common/install_warning.h" |
17 #include "extensions/common/manifest.h" | 19 #include "extensions/common/manifest.h" |
18 #include "extensions/common/manifest_constants.h" | 20 #include "extensions/common/manifest_constants.h" |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 | 135 |
134 FileBrowserHandlerParser::~FileBrowserHandlerParser() { | 136 FileBrowserHandlerParser::~FileBrowserHandlerParser() { |
135 } | 137 } |
136 | 138 |
137 namespace { | 139 namespace { |
138 | 140 |
139 FileBrowserHandler* LoadFileBrowserHandler( | 141 FileBrowserHandler* LoadFileBrowserHandler( |
140 const std::string& extension_id, | 142 const std::string& extension_id, |
141 const base::DictionaryValue* file_browser_handler, | 143 const base::DictionaryValue* file_browser_handler, |
142 base::string16* error) { | 144 base::string16* error) { |
143 scoped_ptr<FileBrowserHandler> result(new FileBrowserHandler()); | 145 std::unique_ptr<FileBrowserHandler> result(new FileBrowserHandler()); |
144 result->set_extension_id(extension_id); | 146 result->set_extension_id(extension_id); |
145 | 147 |
146 std::string handler_id; | 148 std::string handler_id; |
147 // Read the file action |id| (mandatory). | 149 // Read the file action |id| (mandatory). |
148 if (!file_browser_handler->HasKey(keys::kPageActionId) || | 150 if (!file_browser_handler->HasKey(keys::kPageActionId) || |
149 !file_browser_handler->GetString(keys::kPageActionId, &handler_id)) { | 151 !file_browser_handler->GetString(keys::kPageActionId, &handler_id)) { |
150 *error = base::ASCIIToUTF16(errors::kInvalidPageActionId); | 152 *error = base::ASCIIToUTF16(errors::kInvalidPageActionId); |
151 return NULL; | 153 return NULL; |
152 } | 154 } |
153 result->set_id(handler_id); | 155 result->set_id(handler_id); |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 const base::ListValue* extension_actions, | 253 const base::ListValue* extension_actions, |
252 FileBrowserHandler::List* result, | 254 FileBrowserHandler::List* result, |
253 base::string16* error) { | 255 base::string16* error) { |
254 for (base::ListValue::const_iterator iter = extension_actions->begin(); | 256 for (base::ListValue::const_iterator iter = extension_actions->begin(); |
255 iter != extension_actions->end(); | 257 iter != extension_actions->end(); |
256 ++iter) { | 258 ++iter) { |
257 if (!(*iter)->IsType(base::Value::TYPE_DICTIONARY)) { | 259 if (!(*iter)->IsType(base::Value::TYPE_DICTIONARY)) { |
258 *error = base::ASCIIToUTF16(errors::kInvalidFileBrowserHandler); | 260 *error = base::ASCIIToUTF16(errors::kInvalidFileBrowserHandler); |
259 return false; | 261 return false; |
260 } | 262 } |
261 scoped_ptr<FileBrowserHandler> action( | 263 std::unique_ptr<FileBrowserHandler> action(LoadFileBrowserHandler( |
262 LoadFileBrowserHandler( | 264 extension_id, reinterpret_cast<base::DictionaryValue*>(*iter), error)); |
263 extension_id, | |
264 reinterpret_cast<base::DictionaryValue*>(*iter), error)); | |
265 if (!action.get()) | 265 if (!action.get()) |
266 return false; // Failed to parse file browser action definition. | 266 return false; // Failed to parse file browser action definition. |
267 result->push_back(linked_ptr<FileBrowserHandler>(action.release())); | 267 result->push_back(linked_ptr<FileBrowserHandler>(action.release())); |
268 } | 268 } |
269 return true; | 269 return true; |
270 } | 270 } |
271 | 271 |
272 } // namespace | 272 } // namespace |
273 | 273 |
274 bool FileBrowserHandlerParser::Parse(extensions::Extension* extension, | 274 bool FileBrowserHandlerParser::Parse(extensions::Extension* extension, |
(...skipping 11 matching lines...) Expand all Loading... |
286 return true; | 286 return true; |
287 } | 287 } |
288 | 288 |
289 const base::ListValue* file_browser_handlers_list_value = nullptr; | 289 const base::ListValue* file_browser_handlers_list_value = nullptr; |
290 if (!file_browser_handlers_value->GetAsList( | 290 if (!file_browser_handlers_value->GetAsList( |
291 &file_browser_handlers_list_value)) { | 291 &file_browser_handlers_list_value)) { |
292 *error = base::ASCIIToUTF16(errors::kInvalidFileBrowserHandler); | 292 *error = base::ASCIIToUTF16(errors::kInvalidFileBrowserHandler); |
293 return false; | 293 return false; |
294 } | 294 } |
295 | 295 |
296 scoped_ptr<FileBrowserHandlerInfo> info(new FileBrowserHandlerInfo); | 296 std::unique_ptr<FileBrowserHandlerInfo> info(new FileBrowserHandlerInfo); |
297 if (!LoadFileBrowserHandlers(extension->id(), | 297 if (!LoadFileBrowserHandlers(extension->id(), |
298 file_browser_handlers_list_value, | 298 file_browser_handlers_list_value, |
299 &info->file_browser_handlers, error)) { | 299 &info->file_browser_handlers, error)) { |
300 return false; // Failed to parse file browser actions definition. | 300 return false; // Failed to parse file browser actions definition. |
301 } | 301 } |
302 | 302 |
303 extension->SetManifestData(keys::kFileBrowserHandlers, info.release()); | 303 extension->SetManifestData(keys::kFileBrowserHandlers, info.release()); |
304 return true; | 304 return true; |
305 } | 305 } |
306 | 306 |
307 const std::vector<std::string> FileBrowserHandlerParser::Keys() const { | 307 const std::vector<std::string> FileBrowserHandlerParser::Keys() const { |
308 return SingleKey(keys::kFileBrowserHandlers); | 308 return SingleKey(keys::kFileBrowserHandlers); |
309 } | 309 } |
OLD | NEW |