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