OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "chrome/browser/extensions/extension_action.h" | 5 #include "chrome/browser/extensions/extension_action.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 color_utils::HSL shift = {-1, 0, 0.5}; | 44 color_utils::HSL shift = {-1, 0, 0.5}; |
45 return gfx::ImageSkiaRep( | 45 return gfx::ImageSkiaRep( |
46 SkBitmapOperations::CreateHSLShiftedBitmap(icon_rep.sk_bitmap(), shift), | 46 SkBitmapOperations::CreateHSLShiftedBitmap(icon_rep.sk_bitmap(), shift), |
47 icon_rep.scale()); | 47 icon_rep.scale()); |
48 } | 48 } |
49 | 49 |
50 private: | 50 private: |
51 const gfx::ImageSkia icon_; | 51 const gfx::ImageSkia icon_; |
52 }; | 52 }; |
53 | 53 |
| 54 template <class T> |
| 55 bool HasDefaultValue(const std::map<int, T>& map) { |
| 56 return map.find(ExtensionAction::kDefaultTabId) != map.end(); |
| 57 } |
| 58 |
54 } // namespace | 59 } // namespace |
55 | 60 |
56 const int ExtensionAction::kDefaultTabId = -1; | 61 const int ExtensionAction::kDefaultTabId = -1; |
57 | 62 |
58 ExtensionAction::ExtensionAction( | 63 ExtensionAction::ExtensionAction(const std::string& extension_id, |
59 const std::string& extension_id, | 64 extensions::ActionInfo::Type action_type, |
60 extensions::ActionInfo::Type action_type, | 65 const extensions::ActionInfo& manifest_data) |
61 const extensions::ActionInfo& manifest_data) | 66 : extension_id_(extension_id), action_type_(action_type) { |
62 : extension_id_(extension_id), | |
63 action_type_(action_type), | |
64 has_changed_(false) { | |
65 // Page/script actions are hidden/disabled by default, and browser actions are | 67 // Page/script actions are hidden/disabled by default, and browser actions are |
66 // visible/enabled by default. | 68 // visible/enabled by default. |
67 SetIsVisible(kDefaultTabId, | 69 SetIsVisible(kDefaultTabId, |
68 action_type == extensions::ActionInfo::TYPE_BROWSER); | 70 action_type == extensions::ActionInfo::TYPE_BROWSER); |
69 SetTitle(kDefaultTabId, manifest_data.default_title); | 71 SetTitle(kDefaultTabId, manifest_data.default_title); |
70 SetPopupUrl(kDefaultTabId, manifest_data.default_popup_url); | 72 SetPopupUrl(kDefaultTabId, manifest_data.default_popup_url); |
71 if (!manifest_data.default_icon.empty()) { | 73 if (!manifest_data.default_icon.empty()) { |
72 set_default_icon(make_scoped_ptr(new ExtensionIconSet( | 74 set_default_icon(make_scoped_ptr(new ExtensionIconSet( |
73 manifest_data.default_icon))); | 75 manifest_data.default_icon))); |
74 } | 76 } |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
199 new IconWithBadgeImageSource(icon, | 201 new IconWithBadgeImageSource(icon, |
200 icon.size(), | 202 icon.size(), |
201 spacing, | 203 spacing, |
202 GetBadgeText(tab_id), | 204 GetBadgeText(tab_id), |
203 GetBadgeTextColor(tab_id), | 205 GetBadgeTextColor(tab_id), |
204 GetBadgeBackgroundColor(tab_id), | 206 GetBadgeBackgroundColor(tab_id), |
205 action_type()), | 207 action_type()), |
206 icon.size()); | 208 icon.size()); |
207 } | 209 } |
208 | 210 |
| 211 bool ExtensionAction::HasPopupUrl() const { |
| 212 return HasDefaultValue(popup_url_); |
| 213 } |
| 214 |
| 215 bool ExtensionAction::HasTitle() const { return HasDefaultValue(title_); } |
| 216 |
| 217 bool ExtensionAction::HasBadgeText() const { |
| 218 return HasDefaultValue(badge_text_); |
| 219 } |
| 220 |
| 221 bool ExtensionAction::HasBadgeBackgroundColor() const { |
| 222 return HasDefaultValue(badge_background_color_); |
| 223 } |
| 224 |
| 225 bool ExtensionAction::HasBadgeTextColor() const { |
| 226 return HasDefaultValue(badge_text_color_); |
| 227 } |
| 228 |
| 229 bool ExtensionAction::HasIsVisible() const { |
| 230 return HasDefaultValue(is_visible_); |
| 231 } |
| 232 |
| 233 bool ExtensionAction::HasIcon() const { return HasDefaultValue(icon_); } |
| 234 |
209 // Determines which icon would be returned by |GetIcon|, and returns its width. | 235 // Determines which icon would be returned by |GetIcon|, and returns its width. |
210 int ExtensionAction::GetIconWidth(int tab_id) const { | 236 int ExtensionAction::GetIconWidth(int tab_id) const { |
211 // If icon has been set, return its width. | 237 // If icon has been set, return its width. |
212 gfx::ImageSkia icon = GetValue(&icon_, tab_id); | 238 gfx::ImageSkia icon = GetValue(&icon_, tab_id); |
213 if (!icon.isNull()) | 239 if (!icon.isNull()) |
214 return icon.width(); | 240 return icon.width(); |
215 // If there is a default icon, the icon width will be set depending on our | 241 // If there is a default icon, the icon width will be set depending on our |
216 // action type. | 242 // action type. |
217 if (default_icon_) | 243 if (default_icon_) |
218 return GetIconSizeForType(action_type()); | 244 return GetIconSizeForType(action_type()); |
219 | 245 |
220 // If no icon has been set and there is no default icon, we need favicon | 246 // If no icon has been set and there is no default icon, we need favicon |
221 // width. | 247 // width. |
222 return ui::ResourceBundle::GetSharedInstance().GetImageNamed( | 248 return ui::ResourceBundle::GetSharedInstance().GetImageNamed( |
223 IDR_EXTENSIONS_FAVICON).ToImageSkia()->width(); | 249 IDR_EXTENSIONS_FAVICON).ToImageSkia()->width(); |
224 } | 250 } |
OLD | NEW |