OLD | NEW |
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/extension_api.h" | 5 #include "chrome/common/extensions/api/extension_api.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 IDR_EXTENSION_API_JSON_EXPERIMENTAL_INFOBARS, | 73 IDR_EXTENSION_API_JSON_EXPERIMENTAL_INFOBARS, |
74 IDR_EXTENSION_API_JSON_EXPERIMENTAL_INPUT_IME, | 74 IDR_EXTENSION_API_JSON_EXPERIMENTAL_INPUT_IME, |
75 IDR_EXTENSION_API_JSON_EXPERIMENTAL_INPUT_UI, | 75 IDR_EXTENSION_API_JSON_EXPERIMENTAL_INPUT_UI, |
76 IDR_EXTENSION_API_JSON_EXPERIMENTAL_INPUT_VIRTUALKEYBOARD, | 76 IDR_EXTENSION_API_JSON_EXPERIMENTAL_INPUT_VIRTUALKEYBOARD, |
77 IDR_EXTENSION_API_JSON_EXPERIMENTAL_PRIVACY, | 77 IDR_EXTENSION_API_JSON_EXPERIMENTAL_PRIVACY, |
78 IDR_EXTENSION_API_JSON_EXPERIMENTAL_PROCESSES, | 78 IDR_EXTENSION_API_JSON_EXPERIMENTAL_PROCESSES, |
79 IDR_EXTENSION_API_JSON_EXPERIMENTAL_RLZ, | 79 IDR_EXTENSION_API_JSON_EXPERIMENTAL_RLZ, |
80 IDR_EXTENSION_API_JSON_EXPERIMENTAL_SERIAL, | 80 IDR_EXTENSION_API_JSON_EXPERIMENTAL_SERIAL, |
81 IDR_EXTENSION_API_JSON_EXPERIMENTAL_SOCKET, | 81 IDR_EXTENSION_API_JSON_EXPERIMENTAL_SOCKET, |
82 IDR_EXTENSION_API_JSON_EXPERIMENTAL_SPEECHINPUT, | 82 IDR_EXTENSION_API_JSON_EXPERIMENTAL_SPEECHINPUT, |
83 IDR_EXTENSION_API_JSON_EXPERIMENTAL_STORAGE, | |
84 IDR_EXTENSION_API_JSON_EXPERIMENTAL_TOPSITES, | 83 IDR_EXTENSION_API_JSON_EXPERIMENTAL_TOPSITES, |
85 IDR_EXTENSION_API_JSON_EXTENSION, | 84 IDR_EXTENSION_API_JSON_EXTENSION, |
86 IDR_EXTENSION_API_JSON_FILEBROWSERHANDLER, | 85 IDR_EXTENSION_API_JSON_FILEBROWSERHANDLER, |
87 IDR_EXTENSION_API_JSON_FILEBROWSERPRIVATE, | 86 IDR_EXTENSION_API_JSON_FILEBROWSERPRIVATE, |
88 IDR_EXTENSION_API_JSON_HISTORY, | 87 IDR_EXTENSION_API_JSON_HISTORY, |
89 IDR_EXTENSION_API_JSON_I18N, | 88 IDR_EXTENSION_API_JSON_I18N, |
90 IDR_EXTENSION_API_JSON_IDLE, | 89 IDR_EXTENSION_API_JSON_IDLE, |
91 IDR_EXTENSION_API_JSON_INPUTMETHODPRIVATE, | 90 IDR_EXTENSION_API_JSON_INPUTMETHODPRIVATE, |
92 IDR_EXTENSION_API_JSON_MANAGEMENT, | 91 IDR_EXTENSION_API_JSON_MANAGEMENT, |
93 IDR_EXTENSION_API_JSON_MEDIAPLAYERPRIVATE, | 92 IDR_EXTENSION_API_JSON_MEDIAPLAYERPRIVATE, |
94 IDR_EXTENSION_API_JSON_METRICSPRIVATE, | 93 IDR_EXTENSION_API_JSON_METRICSPRIVATE, |
95 IDR_EXTENSION_API_JSON_OMNIBOX, | 94 IDR_EXTENSION_API_JSON_OMNIBOX, |
96 IDR_EXTENSION_API_JSON_PAGEACTION, | 95 IDR_EXTENSION_API_JSON_PAGEACTION, |
97 IDR_EXTENSION_API_JSON_PAGEACTIONS, | 96 IDR_EXTENSION_API_JSON_PAGEACTIONS, |
98 IDR_EXTENSION_API_JSON_PAGECAPTURE, | 97 IDR_EXTENSION_API_JSON_PAGECAPTURE, |
99 IDR_EXTENSION_API_JSON_PERMISSIONS, | 98 IDR_EXTENSION_API_JSON_PERMISSIONS, |
100 IDR_EXTENSION_API_JSON_PROXY, | 99 IDR_EXTENSION_API_JSON_PROXY, |
| 100 IDR_EXTENSION_API_JSON_STORAGE, |
101 IDR_EXTENSION_API_JSON_SYSTEMPRIVATE, | 101 IDR_EXTENSION_API_JSON_SYSTEMPRIVATE, |
102 IDR_EXTENSION_API_JSON_TABS, | 102 IDR_EXTENSION_API_JSON_TABS, |
103 IDR_EXTENSION_API_JSON_TERMINALPRIVATE, | 103 IDR_EXTENSION_API_JSON_TERMINALPRIVATE, |
104 IDR_EXTENSION_API_JSON_TEST, | 104 IDR_EXTENSION_API_JSON_TEST, |
105 IDR_EXTENSION_API_JSON_TTS, | 105 IDR_EXTENSION_API_JSON_TTS, |
106 IDR_EXTENSION_API_JSON_TTSENGINE, | 106 IDR_EXTENSION_API_JSON_TTSENGINE, |
107 IDR_EXTENSION_API_JSON_TYPES, | 107 IDR_EXTENSION_API_JSON_TYPES, |
108 IDR_EXTENSION_API_JSON_WEBNAVIGATION, | 108 IDR_EXTENSION_API_JSON_WEBNAVIGATION, |
109 IDR_EXTENSION_API_JSON_WEBREQUEST, | 109 IDR_EXTENSION_API_JSON_WEBREQUEST, |
110 IDR_EXTENSION_API_JSON_WEBSOCKETPROXYPRIVATE, | 110 IDR_EXTENSION_API_JSON_WEBSOCKETPROXYPRIVATE, |
(...skipping 12 matching lines...) Expand all Loading... |
123 bool ExtensionAPI::IsPrivileged(const std::string& full_name) const { | 123 bool ExtensionAPI::IsPrivileged(const std::string& full_name) const { |
124 std::vector<std::string> split_full_name; | 124 std::vector<std::string> split_full_name; |
125 base::SplitString(full_name, '.', &split_full_name); | 125 base::SplitString(full_name, '.', &split_full_name); |
126 std::string name = split_full_name.back(); | 126 std::string name = split_full_name.back(); |
127 split_full_name.pop_back(); | 127 split_full_name.pop_back(); |
128 std::string name_space = JoinString(split_full_name, '.'); | 128 std::string name_space = JoinString(split_full_name, '.'); |
129 | 129 |
130 // HACK(kalman): explicitly mark all Storage API methods as unprivileged. | 130 // HACK(kalman): explicitly mark all Storage API methods as unprivileged. |
131 // TODO(kalman): solve this in a more general way; the problem is that | 131 // TODO(kalman): solve this in a more general way; the problem is that |
132 // functions-on-properties are not found with the following algorithm. | 132 // functions-on-properties are not found with the following algorithm. |
133 if (name_space == "experimental.storage") | 133 if (name_space == "storage") |
134 return false; | 134 return false; |
135 | 135 |
136 const base::DictionaryValue* name_space_node = GetSchema(name_space); | 136 const base::DictionaryValue* name_space_node = GetSchema(name_space); |
137 if (!name_space_node) | 137 if (!name_space_node) |
138 return true; | 138 return true; |
139 | 139 |
140 if (!IsChildNamePrivileged(name_space_node, "functions", name) || | 140 if (!IsChildNamePrivileged(name_space_node, "functions", name) || |
141 !IsChildNamePrivileged(name_space_node, "events", name)) { | 141 !IsChildNamePrivileged(name_space_node, "events", name)) { |
142 return false; | 142 return false; |
143 } | 143 } |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 void ExtensionAPI::GetSchemasForPermissions( | 200 void ExtensionAPI::GetSchemasForPermissions( |
201 const ExtensionPermissionSet& permissions, SchemaMap* out) const { | 201 const ExtensionPermissionSet& permissions, SchemaMap* out) const { |
202 for (SchemaMap::const_iterator it = schemas_.begin(); it != schemas_.end(); | 202 for (SchemaMap::const_iterator it = schemas_.begin(); it != schemas_.end(); |
203 ++it) { | 203 ++it) { |
204 if (permissions.HasAnyAccessToAPI(it->first)) | 204 if (permissions.HasAnyAccessToAPI(it->first)) |
205 (*out)[it->first] = it->second; | 205 (*out)[it->first] = it->second; |
206 } | 206 } |
207 } | 207 } |
208 | 208 |
209 } | 209 } |
OLD | NEW |