Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Side by Side Diff: chrome/common/extensions/api/file_handlers/file_handlers_parser.cc

Issue 22794012: Rename extension_manifest_keys namespace to extensions::manifest_keys. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 #include "chrome/common/extensions/api/file_handlers/file_handlers_parser.h" 5 #include "chrome/common/extensions/api/file_handlers/file_handlers_parser.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "base/values.h" 10 #include "base/values.h"
11 #include "chrome/common/extensions/extension_manifest_constants.h" 11 #include "chrome/common/extensions/extension_manifest_constants.h"
12 #include "chrome/common/extensions/manifest.h" 12 #include "chrome/common/extensions/manifest.h"
13 #include "extensions/common/error_utils.h" 13 #include "extensions/common/error_utils.h"
14 14
15 namespace keys = extension_manifest_keys; 15 namespace keys = extensions::manifest_keys;
16 namespace errors = extension_manifest_errors;
16 17
17 namespace extensions { 18 namespace extensions {
18 19
19 FileHandlerInfo::FileHandlerInfo() {} 20 FileHandlerInfo::FileHandlerInfo() {}
20 FileHandlerInfo::~FileHandlerInfo() {} 21 FileHandlerInfo::~FileHandlerInfo() {}
21 22
22 FileHandlers::FileHandlers() {} 23 FileHandlers::FileHandlers() {}
23 FileHandlers::~FileHandlers() {} 24 FileHandlers::~FileHandlers() {}
24 25
25 // static 26 // static
26 const std::vector<FileHandlerInfo>* FileHandlers::GetFileHandlers( 27 const std::vector<FileHandlerInfo>* FileHandlers::GetFileHandlers(
27 const Extension* extension) { 28 const Extension* extension) {
28 FileHandlers* info = static_cast<FileHandlers*>( 29 FileHandlers* info = static_cast<FileHandlers*>(
29 extension->GetManifestData(extension_manifest_keys::kFileHandlers)); 30 extension->GetManifestData(keys::kFileHandlers));
30 return info ? &info->file_handlers : NULL; 31 return info ? &info->file_handlers : NULL;
31 } 32 }
32 33
33 FileHandlersParser::FileHandlersParser() { 34 FileHandlersParser::FileHandlersParser() {
34 } 35 }
35 36
36 FileHandlersParser::~FileHandlersParser() { 37 FileHandlersParser::~FileHandlersParser() {
37 } 38 }
38 39
39 bool LoadFileHandler(const std::string& handler_id, 40 bool LoadFileHandler(const std::string& handler_id,
40 const base::DictionaryValue& handler_info, 41 const base::DictionaryValue& handler_info,
41 std::vector<FileHandlerInfo>* file_handlers, 42 std::vector<FileHandlerInfo>* file_handlers,
42 string16* error) { 43 string16* error) {
43 DCHECK(error); 44 DCHECK(error);
44 FileHandlerInfo handler; 45 FileHandlerInfo handler;
45 46
46 handler.id = handler_id; 47 handler.id = handler_id;
47 48
48 const base::ListValue* mime_types = NULL; 49 const base::ListValue* mime_types = NULL;
49 if (handler_info.HasKey(keys::kFileHandlerTypes) && 50 if (handler_info.HasKey(keys::kFileHandlerTypes) &&
50 !handler_info.GetList(keys::kFileHandlerTypes, &mime_types)) { 51 !handler_info.GetList(keys::kFileHandlerTypes, &mime_types)) {
51 *error = ErrorUtils::FormatErrorMessageUTF16( 52 *error = ErrorUtils::FormatErrorMessageUTF16(
52 extension_manifest_errors::kInvalidFileHandlerType, handler_id); 53 errors::kInvalidFileHandlerType, handler_id);
53 return false; 54 return false;
54 } 55 }
55 56
56 const base::ListValue* file_extensions = NULL; 57 const base::ListValue* file_extensions = NULL;
57 if (handler_info.HasKey(keys::kFileHandlerExtensions) && 58 if (handler_info.HasKey(keys::kFileHandlerExtensions) &&
58 !handler_info.GetList(keys::kFileHandlerExtensions, &file_extensions)) { 59 !handler_info.GetList(keys::kFileHandlerExtensions, &file_extensions)) {
59 *error = ErrorUtils::FormatErrorMessageUTF16( 60 *error = ErrorUtils::FormatErrorMessageUTF16(
60 extension_manifest_errors::kInvalidFileHandlerExtension, handler_id); 61 errors::kInvalidFileHandlerExtension, handler_id);
61 return false; 62 return false;
62 } 63 }
63 64
64 if ((!mime_types || mime_types->GetSize() == 0) && 65 if ((!mime_types || mime_types->GetSize() == 0) &&
65 (!file_extensions || file_extensions->GetSize() == 0)) { 66 (!file_extensions || file_extensions->GetSize() == 0)) {
66 *error = ErrorUtils::FormatErrorMessageUTF16( 67 *error = ErrorUtils::FormatErrorMessageUTF16(
67 extension_manifest_errors::kInvalidFileHandlerNoTypeOrExtension, 68 errors::kInvalidFileHandlerNoTypeOrExtension,
68 handler_id); 69 handler_id);
69 return false; 70 return false;
70 } 71 }
71 72
72 if (handler_info.HasKey(keys::kFileHandlerTitle) && 73 if (handler_info.HasKey(keys::kFileHandlerTitle) &&
73 !handler_info.GetString(keys::kFileHandlerTitle, &handler.title)) { 74 !handler_info.GetString(keys::kFileHandlerTitle, &handler.title)) {
74 *error = ASCIIToUTF16(extension_manifest_errors::kInvalidFileHandlerTitle); 75 *error = ASCIIToUTF16(errors::kInvalidFileHandlerTitle);
75 return false; 76 return false;
76 } 77 }
77 78
78 if (mime_types) { 79 if (mime_types) {
79 std::string type; 80 std::string type;
80 for (size_t i = 0; i < mime_types->GetSize(); ++i) { 81 for (size_t i = 0; i < mime_types->GetSize(); ++i) {
81 if (!mime_types->GetString(i, &type)) { 82 if (!mime_types->GetString(i, &type)) {
82 *error = ErrorUtils::FormatErrorMessageUTF16( 83 *error = ErrorUtils::FormatErrorMessageUTF16(
83 extension_manifest_errors::kInvalidFileHandlerTypeElement, 84 errors::kInvalidFileHandlerTypeElement,
84 handler_id, 85 handler_id,
85 std::string(base::IntToString(i))); 86 std::string(base::IntToString(i)));
86 return false; 87 return false;
87 } 88 }
88 handler.types.insert(type); 89 handler.types.insert(type);
89 } 90 }
90 } 91 }
91 92
92 if (file_extensions) { 93 if (file_extensions) {
93 std::string file_extension; 94 std::string file_extension;
94 for (size_t i = 0; i < file_extensions->GetSize(); ++i) { 95 for (size_t i = 0; i < file_extensions->GetSize(); ++i) {
95 if (!file_extensions->GetString(i, &file_extension)) { 96 if (!file_extensions->GetString(i, &file_extension)) {
96 *error = ErrorUtils::FormatErrorMessageUTF16( 97 *error = ErrorUtils::FormatErrorMessageUTF16(
97 extension_manifest_errors::kInvalidFileHandlerExtensionElement, 98 errors::kInvalidFileHandlerExtensionElement,
98 handler_id, 99 handler_id,
99 std::string(base::IntToString(i))); 100 std::string(base::IntToString(i)));
100 return false; 101 return false;
101 } 102 }
102 handler.extensions.insert(file_extension); 103 handler.extensions.insert(file_extension);
103 } 104 }
104 } 105 }
105 106
106 file_handlers->push_back(handler); 107 file_handlers->push_back(handler);
107 return true; 108 return true;
108 } 109 }
109 110
110 bool FileHandlersParser::Parse(Extension* extension, string16* error) { 111 bool FileHandlersParser::Parse(Extension* extension, string16* error) {
111 scoped_ptr<FileHandlers> info(new FileHandlers); 112 scoped_ptr<FileHandlers> info(new FileHandlers);
112 const base::DictionaryValue* all_handlers = NULL; 113 const base::DictionaryValue* all_handlers = NULL;
113 if (!extension->manifest()->GetDictionary(keys::kFileHandlers, 114 if (!extension->manifest()->GetDictionary(keys::kFileHandlers,
114 &all_handlers)) { 115 &all_handlers)) {
115 *error = ASCIIToUTF16(extension_manifest_errors::kInvalidFileHandlers); 116 *error = ASCIIToUTF16(errors::kInvalidFileHandlers);
116 return false; 117 return false;
117 } 118 }
118 119
119 DCHECK(extension->is_platform_app()); 120 DCHECK(extension->is_platform_app());
120 121
121 for (base::DictionaryValue::Iterator iter(*all_handlers); !iter.IsAtEnd(); 122 for (base::DictionaryValue::Iterator iter(*all_handlers); !iter.IsAtEnd();
122 iter.Advance()) { 123 iter.Advance()) {
123 // A file handler entry is a title and a list of MIME types to handle. 124 // A file handler entry is a title and a list of MIME types to handle.
124 const base::DictionaryValue* handler = NULL; 125 const base::DictionaryValue* handler = NULL;
125 if (iter.value().GetAsDictionary(&handler)) { 126 if (iter.value().GetAsDictionary(&handler)) {
126 if (!LoadFileHandler(iter.key(), *handler, &info->file_handlers, error)) 127 if (!LoadFileHandler(iter.key(), *handler, &info->file_handlers, error))
127 return false; 128 return false;
128 } else { 129 } else {
129 *error = ASCIIToUTF16(extension_manifest_errors::kInvalidFileHandlers); 130 *error = ASCIIToUTF16(errors::kInvalidFileHandlers);
130 return false; 131 return false;
131 } 132 }
132 } 133 }
133 134
134 extension->SetManifestData(keys::kFileHandlers, info.release()); 135 extension->SetManifestData(keys::kFileHandlers, info.release());
135 return true; 136 return true;
136 } 137 }
137 138
138 const std::vector<std::string> FileHandlersParser::Keys() const { 139 const std::vector<std::string> FileHandlersParser::Keys() const {
139 return SingleKey(keys::kFileHandlers); 140 return SingleKey(keys::kFileHandlers);
140 } 141 }
141 142
142 } // namespace extensions 143 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698