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

Side by Side Diff: chrome/common/extensions/extension.h

Issue 4200005: Part 4/4 of immutable Extension refactor: Kill Extension::StaticData and put (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 10 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 TYPE_HOSTED_APP, 93 TYPE_HOSTED_APP,
94 TYPE_PACKAGED_APP 94 TYPE_PACKAGED_APP
95 }; 95 };
96 96
97 // An NPAPI plugin included in the extension. 97 // An NPAPI plugin included in the extension.
98 struct PluginInfo { 98 struct PluginInfo {
99 FilePath path; // Path to the plugin. 99 FilePath path; // Path to the plugin.
100 bool is_public; // False if only this extension can load this plugin. 100 bool is_public; // False if only this extension can load this plugin.
101 }; 101 };
102 102
103 // Contains a subset of the extension's data that doesn't change once
104 // initialized, and therefore shareable across threads without locking.
105 struct StaticData : public base::RefCountedThreadSafe<StaticData> {
106 StaticData();
107
108 // A persistent, globally unique ID. An extension's ID is used in things
109 // like directory structures and URLs, and is expected to not change across
110 // versions. It is generated as a SHA-256 hash of the extension's public
111 // key, or as a hash of the path in the case of unpacked extensions.
112 std::string id;
113
114 // The extension's human-readable name. Name is used for display purpose. It
115 // might be wrapped with unicode bidi control characters so that it is
116 // displayed correctly in RTL context.
117 // NOTE: Name is UTF-8 and may contain non-ascii characters.
118 std::string name;
119
120 // The absolute path to the directory the extension is stored in.
121 FilePath path;
122
123 // Default locale for fall back. Can be empty if extension is not localized.
124 std::string default_locale;
125
126 // If true, a separate process will be used for the extension in incognito
127 // mode.
128 bool incognito_split_mode;
129
130 // Defines the set of URLs in the extension's web content.
131 ExtensionExtent extent;
132
133 // The set of host permissions that the extension effectively has access to,
134 // which is a merge of host_permissions_ and all of the match patterns in
135 // any content scripts the extension has. This is used to determine which
136 // URLs have the ability to load an extension's resources via embedded
137 // chrome-extension: URLs (see extension_protocols.cc).
138 ExtensionExtent effective_host_permissions;
139
140 // The set of module-level APIs this extension can use.
141 std::set<std::string> api_permissions;
142
143 // The icons for the extension.
144 ExtensionIconSet icons;
145
146 // The base extension url for the extension.
147 GURL extension_url;
148
149 // The location the extension was loaded from.
150 Location location;
151
152 // The extension's version.
153 scoped_ptr<Version> version;
154
155 // An optional longer description of the extension.
156 std::string description;
157
158 // True if the extension was generated from a user script. (We show slightly
159 // different UI if so).
160 bool converted_from_user_script;
161
162 // Paths to the content scripts the extension contains.
163 UserScriptList content_scripts;
164
165 // The extension's page action, if any.
166 scoped_ptr<ExtensionAction> page_action;
167
168 // The extension's browser action, if any.
169 scoped_ptr<ExtensionAction> browser_action;
170
171 // Optional list of NPAPI plugins and associated properties.
172 std::vector<PluginInfo> plugins;
173
174 // Optional URL to a master page of which a single instance should be always
175 // loaded in the background.
176 GURL background_url;
177
178 // Optional URL to a page for setting options/preferences.
179 GURL options_url;
180
181 // Optional URL to a devtools extension page.
182 GURL devtools_url;
183
184 // Optional list of toolstrips and associated properties.
185 std::vector<GURL> toolstrips;
186
187 // The public key used to sign the contents of the crx package.
188 std::string public_key;
189
190 // A map of resource id's to relative file paths.
191 scoped_ptr<DictionaryValue> theme_images;
192
193 // A map of color names to colors.
194 scoped_ptr<DictionaryValue> theme_colors;
195
196 // A map of color names to colors.
197 scoped_ptr<DictionaryValue> theme_tints;
198
199 // A map of display properties.
200 scoped_ptr<DictionaryValue> theme_display_properties;
201
202 // Whether the extension is a theme.
203 bool is_theme;
204
205 // The sites this extension has permission to talk to (using XHR, etc).
206 URLPatternList host_permissions;
207
208 // The homepage for this extension. Useful if it is not hosted by Google and
209 // therefore does not have a Gallery URL.
210 GURL homepage_url;
211
212 // URL for fetching an update manifest
213 GURL update_url;
214
215 // A copy of the manifest that this extension was created from.
216 scoped_ptr<DictionaryValue> manifest_value;
217
218 // A map of chrome:// hostnames (newtab, downloads, etc.) to Extension URLs
219 // which override the handling of those URLs.
220 URLOverrideMap chrome_url_overrides;
221
222 // Whether this extension uses app features.
223 bool is_app;
224
225 // The local path inside the extension to use with the launcher.
226 std::string launch_local_path;
227
228 // A web url to use with the launcher. Note that this might be relative or
229 // absolute. If relative, it is relative to web_origin.
230 std::string launch_web_url;
231
232 // The type of container to launch into.
233 extension_misc::LaunchContainer launch_container;
234
235 // The default size of the container when launching. Only respected for
236 // containers like panels and windows.
237 int launch_width;
238 int launch_height;
239
240 // The Omnibox keyword for this extension, or empty if there is none.
241 std::string omnibox_keyword;
242
243 protected:
244 friend class base::RefCountedThreadSafe<StaticData>;
245 ~StaticData();
246 };
247
248 // Contains the subset of the extension's (private) data that can be modified 103 // Contains the subset of the extension's (private) data that can be modified
249 // after initialization. This class should only be accessed on the UI thread. 104 // after initialization. This class should only be accessed on the UI thread.
250 struct RuntimeData { 105 struct RuntimeData {
251 // We keep a cache of images loaded from extension resources based on their 106 // We keep a cache of images loaded from extension resources based on their
252 // path and a string representation of a size that may have been used to 107 // path and a string representation of a size that may have been used to
253 // scale it (or the empty string if the image is at its original size). 108 // scale it (or the empty string if the image is at its original size).
254 typedef std::pair<FilePath, std::string> ImageCacheKey; 109 typedef std::pair<FilePath, std::string> ImageCacheKey;
255 typedef std::map<ImageCacheKey, SkBitmap> ImageCache; 110 typedef std::map<ImageCacheKey, SkBitmap> ImageCache;
256 111
257 RuntimeData(); 112 RuntimeData();
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 static bool CanExecuteScriptOnPage( 312 static bool CanExecuteScriptOnPage(
458 const GURL& page_url, 313 const GURL& page_url,
459 bool can_execute_script_everywhere, 314 bool can_execute_script_everywhere,
460 const std::vector<URLPattern>* allowed_pages, 315 const std::vector<URLPattern>* allowed_pages,
461 UserScript* script, 316 UserScript* script,
462 std::string* error); 317 std::string* error);
463 318
464 // Adds an extension to the scripting whitelist. Used for testing only. 319 // Adds an extension to the scripting whitelist. Used for testing only.
465 static void SetScriptingWhitelist(const ScriptingWhitelist& whitelist); 320 static void SetScriptingWhitelist(const ScriptingWhitelist& whitelist);
466 321
467 const StaticData* static_data() const { return static_data_; }
468
469 const FilePath& path() const { return static_data_->path; }
470 const GURL& url() const { return static_data_->extension_url; }
471 Location location() const { return static_data_->location; }
472 const std::string& id() const { return static_data_->id; }
473 const Version* version() const { return static_data_->version.get(); }
474 // String representation of the version number.
475 const std::string VersionString() const;
476 const std::string& name() const { return static_data_->name; }
477 const std::string& public_key() const { return static_data_->public_key; }
478 const std::string& description() const { return static_data_->description; }
479 bool converted_from_user_script() const {
480 return static_data_->converted_from_user_script;
481 }
482 const UserScriptList& content_scripts() const {
483 return static_data_->content_scripts;
484 }
485 ExtensionAction* page_action() const {
486 return static_data_->page_action.get();
487 }
488 ExtensionAction* browser_action() const {
489 return static_data_->browser_action.get();
490 }
491 const std::vector<PluginInfo>& plugins() const {
492 return static_data_->plugins;
493 }
494 const GURL& background_url() const { return static_data_->background_url; }
495 const GURL& options_url() const { return static_data_->options_url; }
496 const GURL& devtools_url() const { return static_data_->devtools_url; }
497 const std::vector<GURL>& toolstrips() const {
498 return static_data_->toolstrips;
499 }
500 const std::set<std::string>& api_permissions() const {
501 return static_data_->api_permissions;
502 }
503 const URLPatternList& host_permissions() const {
504 return static_data_->host_permissions;
505 }
506
507 // Returns true if the extension has the specified API permission. 322 // Returns true if the extension has the specified API permission.
508 static bool HasApiPermission(const std::set<std::string>& api_permissions, 323 static bool HasApiPermission(const std::set<std::string>& api_permissions,
509 const std::string& function_name); 324 const std::string& function_name);
510 325
511 bool HasApiPermission(const std::string& function_name) const { 326 bool HasApiPermission(const std::string& function_name) const {
512 return HasApiPermission(this->api_permissions(), function_name); 327 return HasApiPermission(this->api_permissions(), function_name);
513 } 328 }
514 329
515 const ExtensionExtent& GetEffectiveHostPermissions() const { 330 const ExtensionExtent& GetEffectiveHostPermissions() const {
516 return static_data_->effective_host_permissions; 331 return effective_host_permissions_;
517 } 332 }
518 333
519 // Whether or not the extension is allowed permission for a URL pattern from 334 // Whether or not the extension is allowed permission for a URL pattern from
520 // the manifest. http, https, and chrome://favicon/ is allowed for all 335 // the manifest. http, https, and chrome://favicon/ is allowed for all
521 // extensions, while component extensions are allowed access to 336 // extensions, while component extensions are allowed access to
522 // chrome://resources. 337 // chrome://resources.
523 bool CanSpecifyHostPermission(const URLPattern& pattern) const; 338 bool CanSpecifyHostPermission(const URLPattern& pattern) const;
524 339
525 // Whether the extension has access to the given URL. 340 // Whether the extension has access to the given URL.
526 bool HasHostPermission(const GURL& url) const; 341 bool HasHostPermission(const GURL& url) const;
527 342
528 // Whether the extension has effective access to all hosts. This is true if 343 // Whether the extension has effective access to all hosts. This is true if
529 // there is a content script that matches all hosts, if there is a host 344 // there is a content script that matches all hosts, if there is a host
530 // permission grants access to all hosts (like <all_urls>) or an api 345 // permission grants access to all hosts (like <all_urls>) or an api
531 // permission that effectively grants access to all hosts (e.g. proxy, 346 // permission that effectively grants access to all hosts (e.g. proxy,
532 // network, etc.) 347 // network, etc.)
533 bool HasEffectiveAccessToAllHosts() const; 348 bool HasEffectiveAccessToAllHosts() const;
534 349
535 const GURL& update_url() const { return static_data_->update_url; }
536
537 const ExtensionIconSet& icons() const {
538 return static_data_->icons;
539 }
540
541 // Returns the Homepage URL for this extension. If homepage_url was not 350 // Returns the Homepage URL for this extension. If homepage_url was not
542 // specified in the manifest, this returns the Google Gallery URL. For 351 // specified in the manifest, this returns the Google Gallery URL. For
543 // third-party extensions, this returns a blank GURL. 352 // third-party extensions, this returns a blank GURL.
544 GURL GetHomepageURL() const; 353 GURL GetHomepageURL() const;
545 354
546 // Theme-related.
547 DictionaryValue* GetThemeImages() const {
548 return static_data_->theme_images.get();
549 }
550 DictionaryValue* GetThemeColors() const {
551 return static_data_->theme_colors.get();
552 }
553 DictionaryValue* GetThemeTints() const {
554 return static_data_->theme_tints.get();
555 }
556 DictionaryValue* GetThemeDisplayProperties() const {
557 return static_data_->theme_display_properties.get();
558 }
559 bool is_theme() const { return static_data_->is_theme; }
560
561 // Returns a list of paths (relative to the extension dir) for images that 355 // Returns a list of paths (relative to the extension dir) for images that
562 // the browser might load (like themes and page action icons). 356 // the browser might load (like themes and page action icons).
563 std::set<FilePath> GetBrowserImages() const; 357 std::set<FilePath> GetBrowserImages() const;
564 358
565 // Get an extension icon as a resource or URL. 359 // Get an extension icon as a resource or URL.
566 ExtensionResource GetIconResource( 360 ExtensionResource GetIconResource(
567 int size, ExtensionIconSet::MatchType match_type) const; 361 int size, ExtensionIconSet::MatchType match_type) const;
568 GURL GetIconURL(int size, ExtensionIconSet::MatchType match_type) const; 362 GURL GetIconURL(int size, ExtensionIconSet::MatchType match_type) const;
569 363
570 const DictionaryValue* manifest_value() const {
571 return static_data_->manifest_value.get();
572 }
573
574 const std::string default_locale() const {
575 return static_data_->default_locale;
576 }
577
578 // Chrome URL overrides (see ExtensionOverrideUI).
579 const URLOverrideMap& GetChromeURLOverrides() const {
580 return static_data_->chrome_url_overrides;
581 }
582
583 const std::string omnibox_keyword() const {
584 return static_data_->omnibox_keyword;
585 }
586
587 bool is_app() const { return static_data_->is_app; }
588 const ExtensionExtent& web_extent() const {
589 return static_data_->extent;
590 }
591 const std::string& launch_local_path() const {
592 return static_data_->launch_local_path;
593 }
594 const std::string& launch_web_url() const {
595 return static_data_->launch_web_url;
596 }
597 extension_misc::LaunchContainer launch_container() const {
598 return static_data_->launch_container;
599 }
600 int launch_width() const { return static_data_->launch_width; }
601 int launch_height() const { return static_data_->launch_height; }
602 bool incognito_split_mode() const {
603 return static_data_->incognito_split_mode;
604 }
605 364
606 // Gets the fully resolved absolute launch URL. 365 // Gets the fully resolved absolute launch URL.
607 GURL GetFullLaunchURL() const; 366 GURL GetFullLaunchURL() const;
608 367
368 // Image cache related methods. These are only valid on the UI thread and
369 // not maintained by this class. See ImageLoadingTracker for usage. The
370 // |original_size| parameter should be the size of the image at |source|
371 // before any scaling may have been done to produce the pixels in |image|.
372 void SetCachedImage(const ExtensionResource& source,
373 const SkBitmap& image,
374 const gfx::Size& original_size) const;
375 bool HasCachedImage(const ExtensionResource& source,
376 const gfx::Size& max_size) const;
377 SkBitmap GetCachedImage(const ExtensionResource& source,
378 const gfx::Size& max_size) const;
379 // Returns true if this extension is a COMPONENT extension, or if it is
380 // on the whitelist of extensions that can script all pages.
381 bool CanExecuteScriptEverywhere() const;
382
383 // Accessors:
384
385 const FilePath& path() const { return path_; }
386 const GURL& url() const { return extension_url_; }
387 Location location() const { return location_; }
388 const std::string& id() const { return id_; }
389 const Version* version() const { return version_.get(); }
390 const std::string VersionString() const;
391 const std::string& name() const { return name_; }
392 const std::string& public_key() const { return public_key_; }
393 const std::string& description() const { return description_; }
394 bool converted_from_user_script() const {
395 return converted_from_user_script_;
396 }
397 const UserScriptList& content_scripts() const { return content_scripts_; }
398 ExtensionAction* page_action() const { return page_action_.get(); }
399 ExtensionAction* browser_action() const { return browser_action_.get(); }
400 const std::vector<PluginInfo>& plugins() const { return plugins_; }
401 const GURL& background_url() const { return background_url_; }
402 const GURL& options_url() const { return options_url_; }
403 const GURL& devtools_url() const { return devtools_url_; }
404 const std::vector<GURL>& toolstrips() const { return toolstrips_; }
405 const std::set<std::string>& api_permissions() const {
406 return api_permissions_;
407 }
408 const URLPatternList& host_permissions() const { return host_permissions_; }
409 const GURL& update_url() const { return update_url_; }
410 const ExtensionIconSet& icons() const { return icons_; }
411 const DictionaryValue* manifest_value() const {
412 return manifest_value_.get();
413 }
414 const std::string default_locale() const { return default_locale_; }
415 const URLOverrideMap& GetChromeURLOverrides() const {
416 return chrome_url_overrides_;
417 }
418 const std::string omnibox_keyword() const { return omnibox_keyword_; }
419 bool incognito_split_mode() const { return incognito_split_mode_; }
420
421 // App-related.
422 bool is_app() const { return is_app_; }
423 bool is_hosted_app() const { return is_app() && !web_extent().is_empty(); }
424 bool is_packaged_app() const { return is_app() && web_extent().is_empty(); }
425 const ExtensionExtent& web_extent() const { return extent_; }
426 const std::string& launch_local_path() const { return launch_local_path_; }
427 const std::string& launch_web_url() const { return launch_web_url_; }
428 extension_misc::LaunchContainer launch_container() const {
429 return launch_container_;
430 }
431 int launch_width() const { return launch_width_; }
432 int launch_height() const { return launch_height_; }
433
434 // Theme-related.
435 bool is_theme() const { return is_theme_; }
436 DictionaryValue* GetThemeImages() const { return theme_images_.get(); }
437 DictionaryValue* GetThemeColors() const {return theme_colors_.get(); }
438 DictionaryValue* GetThemeTints() const { return theme_tints_.get(); }
439 DictionaryValue* GetThemeDisplayProperties() const {
440 return theme_display_properties_.get();
441 }
442
609 // Whether the background page, if any, is ready. We don't load other 443 // Whether the background page, if any, is ready. We don't load other
610 // components until then. If there is no background page, we consider it to 444 // components until then. If there is no background page, we consider it to
611 // be ready. 445 // be ready.
612 bool GetBackgroundPageReady() const; 446 bool GetBackgroundPageReady() const;
613 void SetBackgroundPageReady() const; 447 void SetBackgroundPageReady() const;
614 448
615 // Getter and setter for the flag that specifies whether the extension is 449 // Getter and setter for the flag that specifies whether the extension is
616 // being upgraded. 450 // being upgraded.
617 bool being_upgraded() const { return GetRuntimeData()->being_upgraded; } 451 bool being_upgraded() const { return GetRuntimeData()->being_upgraded; }
618 void set_being_upgraded(bool value) const { 452 void set_being_upgraded(bool value) const {
619 GetRuntimeData()->being_upgraded = value; 453 GetRuntimeData()->being_upgraded = value;
620 } 454 }
621 455
622 // Image cache related methods. These are only valid on the UI thread and
623 // not maintained by this class. See ImageLoadingTracker for usage. The
624 // |original_size| parameter should be the size of the image at |source|
625 // before any scaling may have been done to produce the pixels in |image|.
626 void SetCachedImage(const ExtensionResource& source,
627 const SkBitmap& image,
628 const gfx::Size& original_size) const;
629 bool HasCachedImage(const ExtensionResource& source,
630 const gfx::Size& max_size) const;
631 SkBitmap GetCachedImage(const ExtensionResource& source,
632 const gfx::Size& max_size) const;
633 bool is_hosted_app() const { return is_app() && !web_extent().is_empty(); }
634 bool is_packaged_app() const { return is_app() && web_extent().is_empty(); }
635
636 // Returns true if this extension is a COMPONENT extension, or if it is
637 // on the whitelist of extensions that can script all pages.
638 bool CanExecuteScriptEverywhere() const;
639
640 private: 456 private:
641 friend class base::RefCountedThreadSafe<Extension>; 457 friend class base::RefCountedThreadSafe<Extension>;
642 458
643 // Normalize the path for use by the extension. On Windows, this will make 459 // Normalize the path for use by the extension. On Windows, this will make
644 // sure the drive letter is uppercase. 460 // sure the drive letter is uppercase.
645 static FilePath MaybeNormalizePath(const FilePath& path); 461 static FilePath MaybeNormalizePath(const FilePath& path);
646 462
647 Extension(const FilePath& path, Location location); 463 Extension(const FilePath& path, Location location);
648 ~Extension(); 464 ~Extension();
649 465
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
713 std::set<string16> GetSimplePermissionMessages() const; 529 std::set<string16> GetSimplePermissionMessages() const;
714 530
715 // The permission message displayed related to the host permissions for 531 // The permission message displayed related to the host permissions for
716 // this extension. 532 // this extension.
717 string16 GetHostPermissionMessage() const; 533 string16 GetHostPermissionMessage() const;
718 534
719 // Returns a mutable pointer to our runtime data. Can only be called on 535 // Returns a mutable pointer to our runtime data. Can only be called on
720 // the UI thread. 536 // the UI thread.
721 RuntimeData* GetRuntimeData() const; 537 RuntimeData* GetRuntimeData() const;
722 538
723 // Collection of extension data that doesn't change doesn't change once an
724 // Extension object has been initialized. The mutable version is valid only
725 // until InitFromValue finishes, to ensure we don't accidentally modify it
726 // post-initialization.
727 StaticData* mutable_static_data_;
728 scoped_refptr<const StaticData> static_data_;
729
730 // Runtime data. 539 // Runtime data.
731 const RuntimeData runtime_data_; 540 const RuntimeData runtime_data_;
732 541
542 // A persistent, globally unique ID. An extension's ID is used in things
543 // like directory structures and URLs, and is expected to not change across
544 // versions. It is generated as a SHA-256 hash of the extension's public
545 // key, or as a hash of the path in the case of unpacked extensions.
546 std::string id_;
547
548 // The extension's human-readable name. Name is used for display purpose. It
549 // might be wrapped with unicode bidi control characters so that it is
550 // displayed correctly in RTL context.
551 // NOTE: Name is UTF-8 and may contain non-ascii characters.
552 std::string name_;
553
554 // The absolute path to the directory the extension is stored in.
555 FilePath path_;
556
557 // Default locale for fall back. Can be empty if extension is not localized.
558 std::string default_locale_;
559
560 // If true, a separate process will be used for the extension in incognito
561 // mode.
562 bool incognito_split_mode_;
563
564 // Defines the set of URLs in the extension's web content.
565 ExtensionExtent extent_;
566
567 // The set of host permissions that the extension effectively has access to,
568 // which is a merge of host_permissions_ and all of the match patterns in
569 // any content scripts the extension has. This is used to determine which
570 // URLs have the ability to load an extension's resources via embedded
571 // chrome-extension: URLs (see extension_protocols.cc).
572 ExtensionExtent effective_host_permissions_;
573
574 // The set of module-level APIs this extension can use.
575 std::set<std::string> api_permissions_;
576
577 // The icons for the extension.
578 ExtensionIconSet icons_;
579
580 // The base extension url for the extension.
581 GURL extension_url_;
582
583 // The location the extension was loaded from.
584 Location location_;
585
586 // The extension's version.
587 scoped_ptr<Version> version_;
588
589 // An optional longer description of the extension.
590 std::string description_;
591
592 // True if the extension was generated from a user script. (We show slightly
593 // different UI if so).
594 bool converted_from_user_script_;
595
596 // Paths to the content scripts the extension contains.
597 UserScriptList content_scripts_;
598
599 // The extension's page action, if any.
600 scoped_ptr<ExtensionAction> page_action_;
601
602 // The extension's browser action, if any.
603 scoped_ptr<ExtensionAction> browser_action_;
604
605 // Optional list of NPAPI plugins and associated properties.
606 std::vector<PluginInfo> plugins_;
607
608 // Optional URL to a master page of which a single instance should be always
609 // loaded in the background.
610 GURL background_url_;
611
612 // Optional URL to a page for setting options/preferences.
613 GURL options_url_;
614
615 // Optional URL to a devtools extension page.
616 GURL devtools_url_;
617
618 // Optional list of toolstrips and associated properties.
619 std::vector<GURL> toolstrips_;
620
621 // The public key used to sign the contents of the crx package.
622 std::string public_key_;
623
624 // A map of resource id's to relative file paths.
625 scoped_ptr<DictionaryValue> theme_images_;
626
627 // A map of color names to colors.
628 scoped_ptr<DictionaryValue> theme_colors_;
629
630 // A map of color names to colors.
631 scoped_ptr<DictionaryValue> theme_tints_;
632
633 // A map of display properties.
634 scoped_ptr<DictionaryValue> theme_display_properties_;
635
636 // Whether the extension is a theme.
637 bool is_theme_;
638
639 // The sites this extension has permission to talk to (using XHR, etc).
640 URLPatternList host_permissions_;
641
642 // The homepage for this extension. Useful if it is not hosted by Google and
643 // therefore does not have a Gallery URL.
644 GURL homepage_url_;
645
646 // URL for fetching an update manifest
647 GURL update_url_;
648
649 // A copy of the manifest that this extension was created from.
650 scoped_ptr<DictionaryValue> manifest_value_;
651
652 // A map of chrome:// hostnames (newtab, downloads, etc.) to Extension URLs
653 // which override the handling of those URLs. (see ExtensionOverrideUI).
654 URLOverrideMap chrome_url_overrides_;
655
656 // Whether this extension uses app features.
657 bool is_app_;
658
659 // The local path inside the extension to use with the launcher.
660 std::string launch_local_path_;
661
662 // A web url to use with the launcher. Note that this might be relative or
663 // absolute. If relative, it is relative to web_origin.
664 std::string launch_web_url_;
665
666 // The type of container to launch into.
667 extension_misc::LaunchContainer launch_container_;
668
669 // The default size of the container when launching. Only respected for
670 // containers like panels and windows.
671 int launch_width_;
672 int launch_height_;
673
674 // The Omnibox keyword for this extension, or empty if there is none.
675 std::string omnibox_keyword_;
676
733 FRIEND_TEST_ALL_PREFIXES(ExtensionTest, LoadPageActionHelper); 677 FRIEND_TEST_ALL_PREFIXES(ExtensionTest, LoadPageActionHelper);
734 FRIEND_TEST_ALL_PREFIXES(ExtensionTest, InitFromValueInvalid); 678 FRIEND_TEST_ALL_PREFIXES(ExtensionTest, InitFromValueInvalid);
735 FRIEND_TEST_ALL_PREFIXES(ExtensionTest, InitFromValueValid); 679 FRIEND_TEST_ALL_PREFIXES(ExtensionTest, InitFromValueValid);
736 FRIEND_TEST_ALL_PREFIXES(ExtensionTest, InitFromValueValidNameInRTL); 680 FRIEND_TEST_ALL_PREFIXES(ExtensionTest, InitFromValueValidNameInRTL);
737 FRIEND_TEST_ALL_PREFIXES(TabStripModelTest, Apps); 681 FRIEND_TEST_ALL_PREFIXES(TabStripModelTest, Apps);
738 682
739 DISALLOW_COPY_AND_ASSIGN(Extension); 683 DISALLOW_COPY_AND_ASSIGN(Extension);
740 }; 684 };
741 685
742 typedef std::vector< scoped_refptr<const Extension> > ExtensionList; 686 typedef std::vector< scoped_refptr<const Extension> > ExtensionList;
(...skipping 26 matching lines...) Expand all
769 std::set<std::string> extension_api_permissions; 713 std::set<std::string> extension_api_permissions;
770 // TODO(akalin): Once we have a unified ExtensionType, replace the 714 // TODO(akalin): Once we have a unified ExtensionType, replace the
771 // below member variables with a member of that type. 715 // below member variables with a member of that type.
772 bool is_theme; 716 bool is_theme;
773 bool is_app; 717 bool is_app;
774 bool converted_from_user_script; 718 bool converted_from_user_script;
775 GURL update_url; 719 GURL update_url;
776 }; 720 };
777 721
778 #endif // CHROME_COMMON_EXTENSIONS_EXTENSION_H_ 722 #endif // CHROME_COMMON_EXTENSIONS_EXTENSION_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698