Index: chrome/common/extensions/extension.h |
diff --git a/chrome/common/extensions/extension.h b/chrome/common/extensions/extension.h |
index 9a5bfbf2ca729c998acd840e469e210c5c965b22..658b57f443627035dab51b305f42c1856cd56aca 100644 |
--- a/chrome/common/extensions/extension.h |
+++ b/chrome/common/extensions/extension.h |
@@ -38,6 +38,13 @@ class Extension { |
KILLBIT, // Don't install/upgrade (applies to external extensions only). |
}; |
+ enum InstallType { |
+ DOWNGRADE, |
+ REINSTALL, |
+ UPGRADE, |
+ NEW_INSTALL |
+ }; |
+ |
// An NPAPI plugin included in the extension. |
struct PluginInfo { |
FilePath path; // Path to the plugin. |
@@ -53,10 +60,10 @@ class Extension { |
static const wchar_t* kCssKey; |
static const wchar_t* kDescriptionKey; |
static const wchar_t* kIconPathKey; |
- static const wchar_t* kIdKey; |
static const wchar_t* kJsKey; |
static const wchar_t* kMatchesKey; |
static const wchar_t* kNameKey; |
+ static const wchar_t* kPageActionIdKey; |
static const wchar_t* kPageActionsKey; |
static const wchar_t* kPermissionsKey; |
static const wchar_t* kPluginsKey; |
@@ -87,9 +94,9 @@ class Extension { |
static const char* kInvalidCssError; |
static const char* kInvalidCssListError; |
static const char* kInvalidDescriptionError; |
- static const char* kInvalidIdError; |
static const char* kInvalidJsError; |
static const char* kInvalidJsListError; |
+ static const char* kInvalidKeyError; |
static const char* kInvalidManifestError; |
static const char* kInvalidMatchCountError; |
static const char* kInvalidMatchError; |
@@ -101,12 +108,14 @@ class Extension { |
static const char* kInvalidBackgroundError; |
static const char* kInvalidRunAtError; |
+ static const char* kInvalidSignatureError; |
static const char* kInvalidToolstripError; |
static const char* kInvalidToolstripsError; |
static const char* kInvalidVersionError; |
static const char* kInvalidPageActionError; |
static const char* kInvalidPageActionsListError; |
static const char* kInvalidPageActionIconPathError; |
+ static const char* kInvalidPageActionIdError; |
static const char* kInvalidPageActionTooltipError; |
static const char* kInvalidPageActionTypeValueError; |
static const char* kInvalidPermissionsError; |
@@ -133,6 +142,11 @@ class Extension { |
explicit Extension(const FilePath& path); |
virtual ~Extension(); |
+ // Resets the id counter. This is only useful for unit tests. |
+ static void ResetGeneratedIdCounter() { |
+ id_counter_ = 0; |
+ } |
+ |
// Checks to see if the extension has a valid ID. |
static bool IdIsValid(const std::string& id); |
@@ -173,6 +187,11 @@ class Extension { |
// Does a simple base64 encoding of |input| into |output|. |
static bool ProducePEM(const std::string& input, std::string* output); |
+ // Note: The result is coverted to lower-case because the browser enforces |
+ // hosts to be lower-case in omni-bar. |
+ static bool GenerateIdFromPublicKey(const std::string& input, |
+ std::string* output); |
+ |
// Expects base64 encoded |input| and formats into |output| including |
// the appropriate header & footer. |
static bool FormatPEMForFileOutput(const std::string input, |
@@ -193,6 +212,7 @@ class Extension { |
// String representation of the version number. |
const std::string VersionString() const; |
const std::string& name() const { return name_; } |
+ const std::string& public_key() const { return public_key_; } |
const std::string& description() const { return description_; } |
const UserScriptList& content_scripts() const { return content_scripts_; } |
const PageActionMap& page_actions() const { return page_actions_; } |
@@ -222,6 +242,14 @@ class Extension { |
std::set<FilePath> GetBrowserImages(); |
private: |
+ // Counter used to assign ids to extensions that are loaded using |
+ // --load-extension. |
+ static int id_counter_; |
+ |
+ // Returns the next counter id. Intentionally post-incrementing so that first |
+ // value is 0. |
+ static int NextGeneratedId() { return id_counter_++; } |
+ |
// Helper method that loads a UserScript object from a |
// dictionary in the content_script list of the manifest. |
bool LoadUserScriptHelper(const DictionaryValue* content_script, |
@@ -281,10 +309,9 @@ class Extension { |
// Paths to HTML files to be displayed in the toolbar. |
std::vector<std::string> toolstrips_; |
- // A SHA1 hash of the contents of the zip file. Note that this key is only |
- // present in the manifest that's prepended to the zip. The inner manifest |
- // will not have this key. |
- std::string zip_hash_; |
+ // The public key ('key' in the manifest) used to sign the contents of the |
+ // crx package ('signature' in the manifest) |
+ std::string public_key_; |
// A map of resource id's to relative file paths. |
scoped_ptr<DictionaryValue> theme_images_; |