Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4605)

Unified Diff: chrome/common/extensions/extension.h

Issue 8786004: Revert "Restrict extension features based on the extension type." (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/chrome_tests.gypi ('k') | chrome/common/extensions/extension.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/common/extensions/extension.h
diff --git a/chrome/common/extensions/extension.h b/chrome/common/extensions/extension.h
index 54bff608b4992da036268ecf1430650a4e489f51..a0ec6d8efacb7e46626e1a7bac621f65c5d73998 100644
--- a/chrome/common/extensions/extension.h
+++ b/chrome/common/extensions/extension.h
@@ -20,7 +20,6 @@
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/extension_icon_set.h"
#include "chrome/common/extensions/extension_permission_set.h"
-#include "chrome/common/extensions/manifest.h"
#include "chrome/common/extensions/user_script.h"
#include "chrome/common/extensions/url_pattern.h"
#include "chrome/common/extensions/url_pattern_set.h"
@@ -375,7 +374,7 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
// Parses the host and api permissions from the specified permission |key|
// in the manifest |source|.
- bool ParsePermissions(const extensions::Manifest* source,
+ bool ParsePermissions(const base::DictionaryValue* source,
const char* key,
int flags,
std::string* error,
@@ -532,8 +531,8 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
}
const GURL& update_url() const { return update_url_; }
const ExtensionIconSet& icons() const { return icons_; }
- const extensions::Manifest* manifest() const {
- return manifest_.get();
+ const base::DictionaryValue* manifest_value() const {
+ return manifest_value_.get();
}
const std::string default_locale() const { return default_locale_; }
const URLOverrideMap& GetChromeURLOverrides() const {
@@ -558,12 +557,12 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
}
// App-related.
- bool is_app() const {
- return is_packaged_app() || is_hosted_app() || is_platform_app();
+ bool is_app() const { return is_app_; }
+ bool is_platform_app() const { return is_platform_app_; }
+ bool is_hosted_app() const { return is_app() && !web_extent().is_empty(); }
+ bool is_packaged_app() const {
+ return !is_platform_app() && is_app() && web_extent().is_empty();
}
- bool is_platform_app() const { return manifest()->IsPlatformApp(); }
- bool is_hosted_app() const { return manifest()->IsHostedApp(); }
- bool is_packaged_app() const { return manifest()->IsPackagedApp(); }
bool is_storage_isolated() const { return is_app() && is_storage_isolated_; }
const URLPatternSet& web_extent() const { return extent_; }
const std::string& launch_local_path() const { return launch_local_path_; }
@@ -575,7 +574,7 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
int launch_height() const { return launch_height_; }
// Theme-related.
- bool is_theme() const { return manifest()->IsTheme(); }
+ bool is_theme() const { return is_theme_; }
base::DictionaryValue* GetThemeImages() const { return theme_images_.get(); }
base::DictionaryValue* GetThemeColors() const {return theme_colors_.get(); }
base::DictionaryValue* GetThemeTints() const { return theme_tints_.get(); }
@@ -617,8 +616,7 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
~Extension();
// Initialize the extension from a parsed manifest.
- // Takes ownership of the manifest |value|.
- bool InitFromValue(extensions::Manifest* value, int flags,
+ bool InitFromValue(const base::DictionaryValue& value, int flags,
std::string* error);
// Helper function for implementing HasCachedImage/GetCachedImage. A return
@@ -645,21 +643,24 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
UserScript *instance);
// Helpers to load various chunks of the manifest.
- bool LoadExtent(const extensions::Manifest* manifest,
+ bool LoadIsApp(const base::DictionaryValue* manifest, std::string* error);
+ bool LoadExtent(const base::DictionaryValue* manifest,
const char* key,
URLPatternSet* extent,
const char* list_error,
const char* value_error,
URLPattern::ParseOption parse_strictness,
std::string* error);
- bool LoadLaunchContainer(const extensions::Manifest* manifest,
+ bool LoadLaunchContainer(const base::DictionaryValue* manifest,
std::string* error);
- bool LoadLaunchURL(const extensions::Manifest* manifest,
+ bool LoadLaunchURL(const base::DictionaryValue* manifest,
std::string* error);
- bool LoadAppIsolation(const extensions::Manifest* manifest,
+ bool LoadAppIsolation(const base::DictionaryValue* manifest,
std::string* error);
- bool LoadWebIntentServices(const extensions::Manifest* manifest,
+ bool LoadWebIntentServices(const base::DictionaryValue& manifest,
std::string* error);
+ bool EnsureNotHybridApp(const base::DictionaryValue* manifest,
+ std::string* error);
// Helper method to load an ExtensionAction from the page_action or
// browser_action entries in the manifest.
@@ -682,6 +683,10 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
// an extension that has a browser action and a page action.
bool HasMultipleUISurfaces() const;
+ // Figures out if a source contains keys not associated with themes - we
+ // don't want to allow scripts and such to be bundled with themes.
+ bool ContainsNonThemeKeys(const base::DictionaryValue& source) const;
+
// Updates the launch URL and extents for the extension using the given
// |override_url|.
void OverrideLaunchUrl(const GURL& override_url);
@@ -815,6 +820,9 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
// A map of display properties.
scoped_ptr<base::DictionaryValue> theme_display_properties_;
+ // Whether the extension is a theme.
+ bool is_theme_;
+
// The homepage for this extension. Useful if it is not hosted by Google and
// therefore does not have a Gallery URL.
GURL homepage_url_;
@@ -822,13 +830,19 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
// URL for fetching an update manifest
GURL update_url_;
- // The manifest that this extension was created from.
- scoped_ptr<extensions::Manifest> manifest_;
+ // A copy of the manifest that this extension was created from.
+ scoped_ptr<base::DictionaryValue> manifest_value_;
// A map of chrome:// hostnames (newtab, downloads, etc.) to Extension URLs
// which override the handling of those URLs. (see ExtensionOverrideUI).
URLOverrideMap chrome_url_overrides_;
+ // Whether this extension uses app features.
+ bool is_app_;
+
+ // Whether this app uses platform features.
+ bool is_platform_app_;
+
// Whether this extension requests isolated storage.
bool is_storage_isolated_;
« no previous file with comments | « chrome/chrome_tests.gypi ('k') | chrome/common/extensions/extension.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698