| 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 |