| 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 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 369 const std::string& relative_path) { | 369 const std::string& relative_path) { |
| 370 DCHECK(extension_url.SchemeIs(chrome::kExtensionScheme)); | 370 DCHECK(extension_url.SchemeIs(chrome::kExtensionScheme)); |
| 371 DCHECK_EQ("/", extension_url.path()); | 371 DCHECK_EQ("/", extension_url.path()); |
| 372 | 372 |
| 373 GURL ret_val = GURL(extension_url.spec() + relative_path); | 373 GURL ret_val = GURL(extension_url.spec() + relative_path); |
| 374 DCHECK(StartsWithASCII(ret_val.spec(), extension_url.spec(), false)); | 374 DCHECK(StartsWithASCII(ret_val.spec(), extension_url.spec(), false)); |
| 375 | 375 |
| 376 return ret_val; | 376 return ret_val; |
| 377 } | 377 } |
| 378 | 378 |
| 379 bool Extension::IsResourceWebAccessible(const std::string& relative_path) |
| 380 const { |
| 381 // For old manifest versions which do not specify web_accessible_resources |
| 382 // we always allow resource loads. |
| 383 if (manifest_version() < 2 && !HasWebAccessibleResources()) |
| 384 return true; |
| 385 |
| 386 if (web_accessible_resources_.find(relative_path) != |
| 387 web_accessible_resources_.end()) |
| 388 return true; |
| 389 |
| 390 return false; |
| 391 } |
| 392 |
| 393 bool Extension::HasWebAccessibleResources() const { |
| 394 if (web_accessible_resources_.size()) |
| 395 return true; |
| 396 |
| 397 return false; |
| 398 } |
| 399 |
| 379 bool Extension::GenerateId(const std::string& input, std::string* output) { | 400 bool Extension::GenerateId(const std::string& input, std::string* output) { |
| 380 DCHECK(output); | 401 DCHECK(output); |
| 381 uint8 hash[Extension::kIdSize]; | 402 uint8 hash[Extension::kIdSize]; |
| 382 crypto::SHA256HashString(input, hash, sizeof(hash)); | 403 crypto::SHA256HashString(input, hash, sizeof(hash)); |
| 383 *output = StringToLowerASCII(base::HexEncode(hash, sizeof(hash))); | 404 *output = StringToLowerASCII(base::HexEncode(hash, sizeof(hash))); |
| 384 ConvertHexadecimalToIDAlphabet(output); | 405 ConvertHexadecimalToIDAlphabet(output); |
| 385 | 406 |
| 386 return true; | 407 return true; |
| 387 } | 408 } |
| 388 | 409 |
| (...skipping 1436 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1825 return false; // Failed to parse script context definition. | 1846 return false; // Failed to parse script context definition. |
| 1826 script.set_extension_id(id()); | 1847 script.set_extension_id(id()); |
| 1827 if (converted_from_user_script_) { | 1848 if (converted_from_user_script_) { |
| 1828 script.set_emulate_greasemonkey(true); | 1849 script.set_emulate_greasemonkey(true); |
| 1829 script.set_match_all_frames(true); // Greasemonkey matches all frames. | 1850 script.set_match_all_frames(true); // Greasemonkey matches all frames. |
| 1830 } | 1851 } |
| 1831 content_scripts_.push_back(script); | 1852 content_scripts_.push_back(script); |
| 1832 } | 1853 } |
| 1833 } | 1854 } |
| 1834 | 1855 |
| 1856 // Initialize web accessible resources (optional). |
| 1857 if (manifest->HasKey(keys::kWebAccessibleResources)) { |
| 1858 ListValue* list_value; |
| 1859 if (!manifest->GetList(keys::kWebAccessibleResources, &list_value)) { |
| 1860 *error = ASCIIToUTF16(errors::kInvalidWebAccessibleResourcesList); |
| 1861 return false; |
| 1862 } |
| 1863 for (size_t i = 0; i < list_value->GetSize(); ++i) { |
| 1864 std::string relative_path; |
| 1865 if (!list_value->GetString(i, &relative_path)) { |
| 1866 *error = ExtensionErrorUtils::FormatErrorMessageUTF16( |
| 1867 errors::kInvalidWebAccessibleResource, base::IntToString(i)); |
| 1868 return false; |
| 1869 } |
| 1870 if (relative_path[0] != '/') |
| 1871 relative_path = '/' + relative_path; |
| 1872 web_accessible_resources_.insert(relative_path); |
| 1873 } |
| 1874 } |
| 1875 |
| 1835 // Initialize page action (optional). | 1876 // Initialize page action (optional). |
| 1836 DictionaryValue* page_action_value = NULL; | 1877 DictionaryValue* page_action_value = NULL; |
| 1837 | 1878 |
| 1838 if (manifest->HasKey(keys::kPageActions)) { | 1879 if (manifest->HasKey(keys::kPageActions)) { |
| 1839 ListValue* list_value = NULL; | 1880 ListValue* list_value = NULL; |
| 1840 if (!manifest->GetList(keys::kPageActions, &list_value)) { | 1881 if (!manifest->GetList(keys::kPageActions, &list_value)) { |
| 1841 *error = ASCIIToUTF16(errors::kInvalidPageActionsList); | 1882 *error = ASCIIToUTF16(errors::kInvalidPageActionsList); |
| 1842 return false; | 1883 return false; |
| 1843 } | 1884 } |
| 1844 | 1885 |
| (...skipping 1130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2975 already_disabled(false), | 3016 already_disabled(false), |
| 2976 extension(extension) {} | 3017 extension(extension) {} |
| 2977 | 3018 |
| 2978 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( | 3019 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( |
| 2979 const Extension* extension, | 3020 const Extension* extension, |
| 2980 const ExtensionPermissionSet* permissions, | 3021 const ExtensionPermissionSet* permissions, |
| 2981 Reason reason) | 3022 Reason reason) |
| 2982 : reason(reason), | 3023 : reason(reason), |
| 2983 extension(extension), | 3024 extension(extension), |
| 2984 permissions(permissions) {} | 3025 permissions(permissions) {} |
| OLD | NEW |