OLD | NEW |
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 #import "chrome/browser/cocoa/location_bar/page_action_decoration.h" | 5 #import "chrome/browser/cocoa/location_bar/page_action_decoration.h" |
6 | 6 |
7 #include "base/sys_string_conversions.h" | 7 #include "base/sys_string_conversions.h" |
8 #import "chrome/browser/cocoa/extensions/extension_action_context_menu.h" | 8 #import "chrome/browser/cocoa/extensions/extension_action_context_menu.h" |
9 #import "chrome/browser/cocoa/extensions/extension_popup_controller.h" | 9 #import "chrome/browser/cocoa/extensions/extension_popup_controller.h" |
10 #import "chrome/browser/cocoa/location_bar/location_bar_view_mac.h" | 10 #import "chrome/browser/cocoa/location_bar/location_bar_view_mac.h" |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 else | 134 else |
135 icon_path = page_action_->default_icon_path(); | 135 icon_path = page_action_->default_icon_path(); |
136 | 136 |
137 if (!icon_path.empty()) { | 137 if (!icon_path.empty()) { |
138 PageActionMap::iterator iter = page_action_icons_.find(icon_path); | 138 PageActionMap::iterator iter = page_action_icons_.find(icon_path); |
139 if (iter != page_action_icons_.end()) | 139 if (iter != page_action_icons_.end()) |
140 skia_icon = iter->second; | 140 skia_icon = iter->second; |
141 } | 141 } |
142 } | 142 } |
143 | 143 |
144 if (!skia_icon.isNull()) | 144 if (!skia_icon.isNull()) { |
145 SetImage(gfx::SkBitmapToNSImage(skia_icon)); | 145 SetImage(gfx::SkBitmapToNSImage(skia_icon)); |
| 146 } else if (!GetImage()) { |
| 147 // During install the action can be displayed before the icons |
| 148 // have come in. Rather than deal with this in multiple places, |
| 149 // provide a placeholder image. This will be replaced when an |
| 150 // icon comes in. |
| 151 const NSSize default_size = NSMakeSize(Extension::kPageActionIconMaxSize, |
| 152 Extension::kPageActionIconMaxSize); |
| 153 SetImage([[NSImage alloc] initWithSize:default_size]); |
| 154 } |
146 } | 155 } |
147 if (IsVisible() != visible) { | 156 if (IsVisible() != visible) { |
148 SetVisible(visible); | 157 SetVisible(visible); |
149 NotificationService::current()->Notify( | 158 NotificationService::current()->Notify( |
150 NotificationType::EXTENSION_PAGE_ACTION_VISIBILITY_CHANGED, | 159 NotificationType::EXTENSION_PAGE_ACTION_VISIBILITY_CHANGED, |
151 Source<ExtensionAction>(page_action_), | 160 Source<ExtensionAction>(page_action_), |
152 Details<TabContents>(contents)); | 161 Details<TabContents>(contents)); |
153 } | 162 } |
154 } | 163 } |
155 | 164 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
197 if (popup && ![popup isClosing]) | 206 if (popup && ![popup isClosing]) |
198 [popup close]; | 207 [popup close]; |
199 | 208 |
200 break; | 209 break; |
201 } | 210 } |
202 default: | 211 default: |
203 NOTREACHED() << "Unexpected notification"; | 212 NOTREACHED() << "Unexpected notification"; |
204 break; | 213 break; |
205 } | 214 } |
206 } | 215 } |
OLD | NEW |