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

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

Issue 4132005: Kill Extension::RuntimeData and move its guts to ExtensionsService. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: oops 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 the subset of the extension's (private) data that can be modified
104 // after initialization. This class should only be accessed on the UI thread.
105 struct RuntimeData {
106 // We keep a cache of images loaded from extension resources based on their
107 // path and a string representation of a size that may have been used to
108 // scale it (or the empty string if the image is at its original size).
109 typedef std::pair<FilePath, std::string> ImageCacheKey;
110 typedef std::map<ImageCacheKey, SkBitmap> ImageCache;
111
112 RuntimeData();
113 ~RuntimeData();
114
115 // True if the background page is ready.
116 bool background_page_ready;
117
118 // True while the extension is being upgraded.
119 bool being_upgraded;
120
121 // Cached images for this extension.
122 ImageCache image_cache_;
123 };
124
125 // A permission is defined by its |name| (what is used in the manifest), 103 // A permission is defined by its |name| (what is used in the manifest),
126 // and the |message_id| that's used by install/update UI. 104 // and the |message_id| that's used by install/update UI.
127 struct Permission { 105 struct Permission {
128 const char* const name; 106 const char* const name;
129 const int message_id; 107 const int message_id;
130 }; 108 };
131 109
132 static scoped_refptr<Extension> Create(const FilePath& path, 110 static scoped_refptr<Extension> Create(const FilePath& path,
133 Location location, 111 Location location,
134 const DictionaryValue& value, 112 const DictionaryValue& value,
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 411
434 // Theme-related. 412 // Theme-related.
435 bool is_theme() const { return is_theme_; } 413 bool is_theme() const { return is_theme_; }
436 DictionaryValue* GetThemeImages() const { return theme_images_.get(); } 414 DictionaryValue* GetThemeImages() const { return theme_images_.get(); }
437 DictionaryValue* GetThemeColors() const {return theme_colors_.get(); } 415 DictionaryValue* GetThemeColors() const {return theme_colors_.get(); }
438 DictionaryValue* GetThemeTints() const { return theme_tints_.get(); } 416 DictionaryValue* GetThemeTints() const { return theme_tints_.get(); }
439 DictionaryValue* GetThemeDisplayProperties() const { 417 DictionaryValue* GetThemeDisplayProperties() const {
440 return theme_display_properties_.get(); 418 return theme_display_properties_.get();
441 } 419 }
442 420
443 // Whether the background page, if any, is ready. We don't load other
444 // components until then. If there is no background page, we consider it to
445 // be ready.
446 bool GetBackgroundPageReady() const;
447 void SetBackgroundPageReady() const;
448
449 // Getter and setter for the flag that specifies whether the extension is
450 // being upgraded.
451 bool being_upgraded() const { return GetRuntimeData()->being_upgraded; }
452 void set_being_upgraded(bool value) const {
453 GetRuntimeData()->being_upgraded = value;
454 }
455
456 private: 421 private:
457 friend class base::RefCountedThreadSafe<Extension>; 422 friend class base::RefCountedThreadSafe<Extension>;
458 423
424 // We keep a cache of images loaded from extension resources based on their
425 // path and a string representation of a size that may have been used to
426 // scale it (or the empty string if the image is at its original size).
427 typedef std::pair<FilePath, std::string> ImageCacheKey;
428 typedef std::map<ImageCacheKey, SkBitmap> ImageCache;
429
459 // Normalize the path for use by the extension. On Windows, this will make 430 // Normalize the path for use by the extension. On Windows, this will make
460 // sure the drive letter is uppercase. 431 // sure the drive letter is uppercase.
461 static FilePath MaybeNormalizePath(const FilePath& path); 432 static FilePath MaybeNormalizePath(const FilePath& path);
462 433
463 Extension(const FilePath& path, Location location); 434 Extension(const FilePath& path, Location location);
464 ~Extension(); 435 ~Extension();
465 436
466 // Initialize the extension from a parsed manifest. 437 // Initialize the extension from a parsed manifest.
467 // Usually, the id of an extension is generated by the "key" property of 438 // Usually, the id of an extension is generated by the "key" property of
468 // its manifest, but if |require_key| is |false|, a temporary ID will be 439 // its manifest, but if |require_key| is |false|, a temporary ID will be
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 // The set of unique API install messages that the extension has. 496 // The set of unique API install messages that the extension has.
526 // NOTE: This only includes messages related to permissions declared in the 497 // NOTE: This only includes messages related to permissions declared in the
527 // "permissions" key in the manifest. Permissions implied from other features 498 // "permissions" key in the manifest. Permissions implied from other features
528 // of the manifest, like plugins and content scripts are not included. 499 // of the manifest, like plugins and content scripts are not included.
529 std::set<string16> GetSimplePermissionMessages() const; 500 std::set<string16> GetSimplePermissionMessages() const;
530 501
531 // The permission message displayed related to the host permissions for 502 // The permission message displayed related to the host permissions for
532 // this extension. 503 // this extension.
533 string16 GetHostPermissionMessage() const; 504 string16 GetHostPermissionMessage() const;
534 505
535 // Returns a mutable pointer to our runtime data. Can only be called on 506 // Cached images for this extension. This should only be touched on the UI
536 // the UI thread. 507 // thread.
537 RuntimeData* GetRuntimeData() const; 508 mutable ImageCache image_cache_;
538
539 // Runtime data.
540 const RuntimeData runtime_data_;
541 509
542 // A persistent, globally unique ID. An extension's ID is used in things 510 // 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 511 // 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 512 // 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. 513 // key, or as a hash of the path in the case of unpacked extensions.
546 std::string id_; 514 std::string id_;
547 515
548 // The extension's human-readable name. Name is used for display purpose. It 516 // 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 517 // might be wrapped with unicode bidi control characters so that it is
550 // displayed correctly in RTL context. 518 // displayed correctly in RTL context.
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
713 std::set<std::string> extension_api_permissions; 681 std::set<std::string> extension_api_permissions;
714 // TODO(akalin): Once we have a unified ExtensionType, replace the 682 // TODO(akalin): Once we have a unified ExtensionType, replace the
715 // below member variables with a member of that type. 683 // below member variables with a member of that type.
716 bool is_theme; 684 bool is_theme;
717 bool is_app; 685 bool is_app;
718 bool converted_from_user_script; 686 bool converted_from_user_script;
719 GURL update_url; 687 GURL update_url;
720 }; 688 };
721 689
722 #endif // CHROME_COMMON_EXTENSIONS_EXTENSION_H_ 690 #endif // CHROME_COMMON_EXTENSIONS_EXTENSION_H_
OLDNEW
« no previous file with comments | « chrome/browser/views/browser_actions_container.cc ('k') | chrome/common/extensions/extension.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698