OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 #ifndef CHROME_COMMON_EXTENSIONS_EXTENSION_H_ | 5 #ifndef CHROME_COMMON_EXTENSIONS_EXTENSION_H_ |
6 #define CHROME_COMMON_EXTENSIONS_EXTENSION_H_ | 6 #define CHROME_COMMON_EXTENSIONS_EXTENSION_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <map> | 9 #include <map> |
10 #include <set> | 10 #include <set> |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
116 // Return the update url used by gallery/webstore extensions. | 116 // Return the update url used by gallery/webstore extensions. |
117 static GURL GalleryUpdateUrl(bool secure); | 117 static GURL GalleryUpdateUrl(bool secure); |
118 | 118 |
119 // The install message id for |permission|. Returns 0 if none exists. | 119 // The install message id for |permission|. Returns 0 if none exists. |
120 static int GetPermissionMessageId(const std::string& permission); | 120 static int GetPermissionMessageId(const std::string& permission); |
121 | 121 |
122 // Returns the full list of permission messages that this extension | 122 // Returns the full list of permission messages that this extension |
123 // should display at install time. | 123 // should display at install time. |
124 std::vector<string16> GetPermissionMessages() const; | 124 std::vector<string16> GetPermissionMessages() const; |
125 | 125 |
126 // Returns the distinct hosts that should be displayed in the install UI. This | 126 // Returns the distinct hosts that should be displayed in the install UI |
127 // discards some of the detail that is present in the manifest to make it as | 127 // for the URL patterns |list|. This discards some of the detail that is |
128 // easy as possible to process by users. In particular we disregard the scheme | 128 // present in the manifest to make it as easy as possible to process by |
129 // and path components of URLPatterns and de-dupe the result. | 129 // users. In particular we disregard the scheme and path components of |
130 static std::vector<std::string> GetDistinctHosts( | 130 // URLPatterns and de-dupe the result, which includes filtering out common |
131 const URLPatternList& host_patterns); | 131 // hosts with differing RCDs. (NOTE: when de-duping hosts with common RCDs, |
132 std::vector<std::string> GetDistinctHosts() const; | 132 // the first pattern is returned and the rest discarded) |
| 133 static std::vector<std::string> GetDistinctHostsForDisplay( |
| 134 const URLPatternList& list); |
| 135 |
| 136 // Compares two URLPatternLists for security equality by returning whether |
| 137 // the URL patterns in |new_list| contain additional distinct hosts compared |
| 138 // to |old_list|. |
| 139 static bool IsElevatedHostList( |
| 140 const URLPatternList& old_list, const URLPatternList& new_list); |
133 | 141 |
134 // Icon sizes used by the extension system. | 142 // Icon sizes used by the extension system. |
135 static const int kIconSizes[]; | 143 static const int kIconSizes[]; |
136 | 144 |
137 // Max size (both dimensions) for browser and page actions. | 145 // Max size (both dimensions) for browser and page actions. |
138 static const int kPageActionIconMaxSize; | 146 static const int kPageActionIconMaxSize; |
139 static const int kBrowserActionIconMaxSize; | 147 static const int kBrowserActionIconMaxSize; |
140 | 148 |
141 // Each permission is a module that the extension is permitted to use. | 149 // Each permission is a module that the extension is permitted to use. |
142 // | 150 // |
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
449 // We keep a cache of images loaded from extension resources based on their | 457 // We keep a cache of images loaded from extension resources based on their |
450 // path and a string representation of a size that may have been used to | 458 // path and a string representation of a size that may have been used to |
451 // scale it (or the empty string if the image is at its original size). | 459 // scale it (or the empty string if the image is at its original size). |
452 typedef std::pair<FilePath, std::string> ImageCacheKey; | 460 typedef std::pair<FilePath, std::string> ImageCacheKey; |
453 typedef std::map<ImageCacheKey, SkBitmap> ImageCache; | 461 typedef std::map<ImageCacheKey, SkBitmap> ImageCache; |
454 | 462 |
455 // Normalize the path for use by the extension. On Windows, this will make | 463 // Normalize the path for use by the extension. On Windows, this will make |
456 // sure the drive letter is uppercase. | 464 // sure the drive letter is uppercase. |
457 static FilePath MaybeNormalizePath(const FilePath& path); | 465 static FilePath MaybeNormalizePath(const FilePath& path); |
458 | 466 |
| 467 // Returns the distinct hosts that can be displayed in the install UI or be |
| 468 // used for privilege comparisons. This discards some of the detail that is |
| 469 // present in the manifest to make it as easy as possible to process by users. |
| 470 // In particular we disregard the scheme and path components of URLPatterns |
| 471 // and de-dupe the result, which includes filtering out common hosts with |
| 472 // differing RCDs. If |include_rcd| is true, then the de-duped result |
| 473 // will be the first full entry, including its RCD. So if the list was |
| 474 // "*.google.co.uk" and "*.google.com", the returned value would just be |
| 475 // "*.google.co.uk". Keeping the RCD in the result is useful for display |
| 476 // purposes when you want to show the user one sample hostname from the list. |
| 477 // If you need to compare two URLPatternLists for security equality, then set |
| 478 // |include_rcd| to false, which will return a result like "*.google.", |
| 479 // regardless of the order of the patterns. |
| 480 static std::vector<std::string> GetDistinctHosts( |
| 481 const URLPatternList& host_patterns, bool include_rcd); |
| 482 |
459 Extension(const FilePath& path, Location location); | 483 Extension(const FilePath& path, Location location); |
460 ~Extension(); | 484 ~Extension(); |
461 | 485 |
462 // Initialize the extension from a parsed manifest. | 486 // Initialize the extension from a parsed manifest. |
463 // Usually, the id of an extension is generated by the "key" property of | 487 // Usually, the id of an extension is generated by the "key" property of |
464 // its manifest, but if |require_key| is |false|, a temporary ID will be | 488 // its manifest, but if |require_key| is |false|, a temporary ID will be |
465 // generated based on the path. | 489 // generated based on the path. |
466 bool InitFromValue(const DictionaryValue& value, bool require_key, | 490 bool InitFromValue(const DictionaryValue& value, bool require_key, |
467 std::string* error); | 491 std::string* error); |
468 | 492 |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
708 std::set<std::string> extension_api_permissions; | 732 std::set<std::string> extension_api_permissions; |
709 // TODO(akalin): Once we have a unified ExtensionType, replace the | 733 // TODO(akalin): Once we have a unified ExtensionType, replace the |
710 // below member variables with a member of that type. | 734 // below member variables with a member of that type. |
711 bool is_theme; | 735 bool is_theme; |
712 bool is_app; | 736 bool is_app; |
713 bool converted_from_user_script; | 737 bool converted_from_user_script; |
714 GURL update_url; | 738 GURL update_url; |
715 }; | 739 }; |
716 | 740 |
717 #endif // CHROME_COMMON_EXTENSIONS_EXTENSION_H_ | 741 #endif // CHROME_COMMON_EXTENSIONS_EXTENSION_H_ |
OLD | NEW |