| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/extension.h" | 5 #include "chrome/common/extensions/extension.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/base64.h" | 9 #include "base/base64.h" |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 #include "crypto/sha2.h" | 25 #include "crypto/sha2.h" |
| 26 #include "chrome/common/chrome_constants.h" | 26 #include "chrome/common/chrome_constants.h" |
| 27 #include "chrome/common/chrome_switches.h" | 27 #include "chrome/common/chrome_switches.h" |
| 28 #include "chrome/common/chrome_version_info.h" | 28 #include "chrome/common/chrome_version_info.h" |
| 29 #include "chrome/common/extensions/csp_validator.h" | 29 #include "chrome/common/extensions/csp_validator.h" |
| 30 #include "chrome/common/extensions/extension_action.h" | 30 #include "chrome/common/extensions/extension_action.h" |
| 31 #include "chrome/common/extensions/extension_constants.h" | 31 #include "chrome/common/extensions/extension_constants.h" |
| 32 #include "chrome/common/extensions/extension_error_utils.h" | 32 #include "chrome/common/extensions/extension_error_utils.h" |
| 33 #include "chrome/common/extensions/extension_l10n_util.h" | 33 #include "chrome/common/extensions/extension_l10n_util.h" |
| 34 #include "chrome/common/extensions/extension_resource.h" | 34 #include "chrome/common/extensions/extension_resource.h" |
| 35 #include "chrome/common/extensions/extension_sidebar_defaults.h" | |
| 36 #include "chrome/common/extensions/extension_sidebar_utils.h" | |
| 37 #include "chrome/common/extensions/file_browser_handler.h" | 35 #include "chrome/common/extensions/file_browser_handler.h" |
| 38 #include "chrome/common/extensions/manifest.h" | 36 #include "chrome/common/extensions/manifest.h" |
| 39 #include "chrome/common/extensions/user_script.h" | 37 #include "chrome/common/extensions/user_script.h" |
| 40 #include "chrome/common/url_constants.h" | 38 #include "chrome/common/url_constants.h" |
| 41 #include "googleurl/src/url_util.h" | 39 #include "googleurl/src/url_util.h" |
| 42 #include "grit/chromium_strings.h" | 40 #include "grit/chromium_strings.h" |
| 43 #include "grit/generated_resources.h" | 41 #include "grit/generated_resources.h" |
| 44 #include "grit/theme_resources.h" | 42 #include "grit/theme_resources.h" |
| 45 #include "net/base/registry_controlled_domain.h" | 43 #include "net/base/registry_controlled_domain.h" |
| 46 #include "third_party/skia/include/core/SkBitmap.h" | 44 #include "third_party/skia/include/core/SkBitmap.h" |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 const int Extension::kIconSizes[] = { | 193 const int Extension::kIconSizes[] = { |
| 196 EXTENSION_ICON_LARGE, | 194 EXTENSION_ICON_LARGE, |
| 197 EXTENSION_ICON_MEDIUM, | 195 EXTENSION_ICON_MEDIUM, |
| 198 EXTENSION_ICON_SMALL, | 196 EXTENSION_ICON_SMALL, |
| 199 EXTENSION_ICON_SMALLISH, | 197 EXTENSION_ICON_SMALLISH, |
| 200 EXTENSION_ICON_BITTY | 198 EXTENSION_ICON_BITTY |
| 201 }; | 199 }; |
| 202 | 200 |
| 203 const int Extension::kPageActionIconMaxSize = 19; | 201 const int Extension::kPageActionIconMaxSize = 19; |
| 204 const int Extension::kBrowserActionIconMaxSize = 19; | 202 const int Extension::kBrowserActionIconMaxSize = 19; |
| 205 const int Extension::kSidebarIconMaxSize = 16; | |
| 206 | 203 |
| 207 const int Extension::kValidWebExtentSchemes = | 204 const int Extension::kValidWebExtentSchemes = |
| 208 URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS; | 205 URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS; |
| 209 | 206 |
| 210 const int Extension::kValidHostPermissionSchemes = | 207 const int Extension::kValidHostPermissionSchemes = |
| 211 UserScript::kValidUserScriptSchemes | URLPattern::SCHEME_CHROMEUI; | 208 UserScript::kValidUserScriptSchemes | URLPattern::SCHEME_CHROMEUI; |
| 212 | 209 |
| 213 Extension::InputComponentInfo::InputComponentInfo() | 210 Extension::InputComponentInfo::InputComponentInfo() |
| 214 : type(INPUT_COMPONENT_TYPE_NONE), | 211 : type(INPUT_COMPONENT_TYPE_NONE), |
| 215 shortcut_alt(false), | 212 shortcut_alt(false), |
| (...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 836 default_icon.empty()) { | 833 default_icon.empty()) { |
| 837 *error = ASCIIToUTF16(errors::kInvalidPageActionIconPath); | 834 *error = ASCIIToUTF16(errors::kInvalidPageActionIconPath); |
| 838 return NULL; | 835 return NULL; |
| 839 } | 836 } |
| 840 result->set_icon_path(default_icon); | 837 result->set_icon_path(default_icon); |
| 841 } | 838 } |
| 842 | 839 |
| 843 return result.release(); | 840 return result.release(); |
| 844 } | 841 } |
| 845 | 842 |
| 846 ExtensionSidebarDefaults* Extension::LoadExtensionSidebarDefaults( | |
| 847 const DictionaryValue* extension_sidebar, string16* error) { | |
| 848 scoped_ptr<ExtensionSidebarDefaults> result(new ExtensionSidebarDefaults()); | |
| 849 | |
| 850 std::string default_icon; | |
| 851 // Read sidebar's |default_icon| (optional). | |
| 852 if (extension_sidebar->HasKey(keys::kSidebarDefaultIcon)) { | |
| 853 if (!extension_sidebar->GetString(keys::kSidebarDefaultIcon, | |
| 854 &default_icon) || | |
| 855 default_icon.empty()) { | |
| 856 *error = ASCIIToUTF16(errors::kInvalidSidebarDefaultIconPath); | |
| 857 return NULL; | |
| 858 } | |
| 859 result->set_default_icon_path(default_icon); | |
| 860 } | |
| 861 | |
| 862 // Read sidebar's |default_title| (optional). | |
| 863 string16 default_title; | |
| 864 if (extension_sidebar->HasKey(keys::kSidebarDefaultTitle)) { | |
| 865 if (!extension_sidebar->GetString(keys::kSidebarDefaultTitle, | |
| 866 &default_title)) { | |
| 867 *error = ASCIIToUTF16(errors::kInvalidSidebarDefaultTitle); | |
| 868 return NULL; | |
| 869 } | |
| 870 } | |
| 871 result->set_default_title(default_title); | |
| 872 | |
| 873 // Read sidebar's |default_page| (optional). | |
| 874 // TODO(rdevlin.cronin): Continue removing std::string errors and replace | |
| 875 // with string16 | |
| 876 std::string default_page; | |
| 877 std::string utf8_error; | |
| 878 if (extension_sidebar->HasKey(keys::kSidebarDefaultPage)) { | |
| 879 if (!extension_sidebar->GetString(keys::kSidebarDefaultPage, | |
| 880 &default_page) || | |
| 881 default_page.empty()) { | |
| 882 *error = ASCIIToUTF16(errors::kInvalidSidebarDefaultPage); | |
| 883 return NULL; | |
| 884 } | |
| 885 GURL url = extension_sidebar_utils::ResolveRelativePath( | |
| 886 default_page, this, &utf8_error); | |
| 887 *error = UTF8ToUTF16(utf8_error); | |
| 888 if (!url.is_valid()) | |
| 889 return NULL; | |
| 890 result->set_default_page(url); | |
| 891 } | |
| 892 | |
| 893 return result.release(); | |
| 894 } | |
| 895 | |
| 896 bool Extension::LoadExtent(const extensions::Manifest* manifest, | 843 bool Extension::LoadExtent(const extensions::Manifest* manifest, |
| 897 const char* key, | 844 const char* key, |
| 898 URLPatternSet* extent, | 845 URLPatternSet* extent, |
| 899 const char* list_error, | 846 const char* list_error, |
| 900 const char* value_error, | 847 const char* value_error, |
| 901 string16* error) { | 848 string16* error) { |
| 902 Value* temp = NULL; | 849 Value* temp = NULL; |
| 903 if (!manifest->Get(key, &temp)) | 850 if (!manifest->Get(key, &temp)) |
| 904 return true; | 851 return true; |
| 905 | 852 |
| (...skipping 1286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2192 // Initialize devtools page url (optional). | 2139 // Initialize devtools page url (optional). |
| 2193 if (manifest->HasKey(keys::kDevToolsPage)) { | 2140 if (manifest->HasKey(keys::kDevToolsPage)) { |
| 2194 std::string devtools_str; | 2141 std::string devtools_str; |
| 2195 if (!manifest->GetString(keys::kDevToolsPage, &devtools_str)) { | 2142 if (!manifest->GetString(keys::kDevToolsPage, &devtools_str)) { |
| 2196 *error = ASCIIToUTF16(errors::kInvalidDevToolsPage); | 2143 *error = ASCIIToUTF16(errors::kInvalidDevToolsPage); |
| 2197 return false; | 2144 return false; |
| 2198 } | 2145 } |
| 2199 devtools_url_ = GetResourceURL(devtools_str); | 2146 devtools_url_ = GetResourceURL(devtools_str); |
| 2200 } | 2147 } |
| 2201 | 2148 |
| 2202 // Initialize sidebar action (optional). | |
| 2203 if (manifest->HasKey(keys::kSidebar)) { | |
| 2204 DictionaryValue* sidebar_value = NULL; | |
| 2205 if (!manifest->GetDictionary(keys::kSidebar, &sidebar_value)) { | |
| 2206 *error = ASCIIToUTF16(errors::kInvalidSidebar); | |
| 2207 return false; | |
| 2208 } | |
| 2209 if (!api_permissions.count(ExtensionAPIPermission::kExperimental)) { | |
| 2210 *error = ASCIIToUTF16(errors::kSidebarExperimental); | |
| 2211 return false; | |
| 2212 } | |
| 2213 sidebar_defaults_.reset(LoadExtensionSidebarDefaults(sidebar_value, error)); | |
| 2214 if (!sidebar_defaults_.get()) | |
| 2215 return false; // Failed to parse sidebar definition. | |
| 2216 } | |
| 2217 | |
| 2218 // Initialize text-to-speech voices (optional). | 2149 // Initialize text-to-speech voices (optional). |
| 2219 if (manifest->HasKey(keys::kTtsEngine)) { | 2150 if (manifest->HasKey(keys::kTtsEngine)) { |
| 2220 DictionaryValue* tts_dict = NULL; | 2151 DictionaryValue* tts_dict = NULL; |
| 2221 if (!manifest->GetDictionary(keys::kTtsEngine, &tts_dict)) { | 2152 if (!manifest->GetDictionary(keys::kTtsEngine, &tts_dict)) { |
| 2222 *error = ASCIIToUTF16(errors::kInvalidTts); | 2153 *error = ASCIIToUTF16(errors::kInvalidTts); |
| 2223 return false; | 2154 return false; |
| 2224 } | 2155 } |
| 2225 | 2156 |
| 2226 if (tts_dict->HasKey(keys::kTtsVoices)) { | 2157 if (tts_dict->HasKey(keys::kTtsVoices)) { |
| 2227 ListValue* tts_voices = NULL; | 2158 ListValue* tts_voices = NULL; |
| (...skipping 747 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2975 already_disabled(false), | 2906 already_disabled(false), |
| 2976 extension(extension) {} | 2907 extension(extension) {} |
| 2977 | 2908 |
| 2978 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( | 2909 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( |
| 2979 const Extension* extension, | 2910 const Extension* extension, |
| 2980 const ExtensionPermissionSet* permissions, | 2911 const ExtensionPermissionSet* permissions, |
| 2981 Reason reason) | 2912 Reason reason) |
| 2982 : reason(reason), | 2913 : reason(reason), |
| 2983 extension(extension), | 2914 extension(extension), |
| 2984 permissions(permissions) {} | 2915 permissions(permissions) {} |
| OLD | NEW |