summaryrefslogtreecommitdiffstats
path: root/chrome/browser/cocoa/keyword_editor_cocoa_controller.mm
diff options
context:
space:
mode:
authorthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-13 03:26:13 +0000
committerthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-13 03:26:13 +0000
commit15be81387f3ab40242d28f3ee53adc3d6a1fac1c (patch)
tree85ec956d20e07971d630aa1920eacdf73401347b /chrome/browser/cocoa/keyword_editor_cocoa_controller.mm
parent969a7b97029963ba6c6dd1456132d844160b5ad0 (diff)
downloadchromium_src-15be81387f3ab40242d28f3ee53adc3d6a1fac1c.zip
chromium_src-15be81387f3ab40242d28f3ee53adc3d6a1fac1c.tar.gz
chromium_src-15be81387f3ab40242d28f3ee53adc3d6a1fac1c.tar.bz2
Mac: Add favicons to task manager.
Pull NSImage cache out of search engine dialog into its own class, reuse that. Implement browser icon code in task_manager_resource_provider's browser resource provider. BUG=13156 TEST=Open task manager. You should see icons. Open search engine manager, should still show icons. Review URL: http://codereview.chromium.org/549021 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36087 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa/keyword_editor_cocoa_controller.mm')
-rw-r--r--chrome/browser/cocoa/keyword_editor_cocoa_controller.mm62
1 files changed, 14 insertions, 48 deletions
diff --git a/chrome/browser/cocoa/keyword_editor_cocoa_controller.mm b/chrome/browser/cocoa/keyword_editor_cocoa_controller.mm
index d2e1d7a..7440a17 100644
--- a/chrome/browser/cocoa/keyword_editor_cocoa_controller.mm
+++ b/chrome/browser/cocoa/keyword_editor_cocoa_controller.mm
@@ -30,11 +30,7 @@
KeywordEditorModelObserver::KeywordEditorModelObserver(
KeywordEditorCocoaController* controller)
: controller_(controller),
- iconImages_([[NSPointerArray alloc] initWithOptions:
- NSPointerFunctionsStrongMemory |
- NSPointerFunctionsObjectPersonality]) {
- int count = [controller_ controller]->table_model()->RowCount();
- [iconImages_ setCount:count];
+ icon_cache_(this) {
}
KeywordEditorModelObserver::~KeywordEditorModelObserver() {
@@ -59,65 +55,35 @@ void KeywordEditorModelObserver::OnEditedKeyword(
}
void KeywordEditorModelObserver::OnModelChanged() {
- int count = [controller_ controller]->table_model()->RowCount();
- [iconImages_ setCount:0];
- [iconImages_ setCount:count];
+ icon_cache_.OnModelChanged();
[controller_ modelChanged];
}
void KeywordEditorModelObserver::OnItemsChanged(int start, int length) {
- DCHECK_LE(start + length, static_cast<int>([iconImages_ count]));
- for (int i = start; i < (start + length); ++i) {
- [iconImages_ replacePointerAtIndex:i withPointer:NULL];
- }
- DCHECK_EQ([controller_ controller]->table_model()->RowCount(),
- static_cast<int>([iconImages_ count]));
+ icon_cache_.OnItemsChanged(start, length);
[controller_ modelChanged];
}
void KeywordEditorModelObserver::OnItemsAdded(int start, int length) {
- DCHECK_LE(start, static_cast<int>([iconImages_ count]));
-
- // -[NSPointerArray insertPointer:atIndex:] throws if index == count.
- // Instead expand the array with NULLs.
- if (start == static_cast<int>([iconImages_ count])) {
- [iconImages_ setCount:start + length];
- } else {
- for (int i = 0; i < length; ++i) {
- [iconImages_ insertPointer:NULL atIndex:start]; // Values slide up.
- }
- }
- DCHECK_EQ([controller_ controller]->table_model()->RowCount(),
- static_cast<int>([iconImages_ count]));
+ icon_cache_.OnItemsAdded(start, length);
[controller_ modelChanged];
}
void KeywordEditorModelObserver::OnItemsRemoved(int start, int length) {
- DCHECK_LE(start + length, static_cast<int>([iconImages_ count]));
- for (int i = 0; i < length; ++i) {
- [iconImages_ removePointerAtIndex:start]; // Values slide down.
- }
- DCHECK_EQ([controller_ controller]->table_model()->RowCount(),
- static_cast<int>([iconImages_ count]));
+ icon_cache_.OnItemsRemoved(start, length);
[controller_ modelChanged];
}
+int KeywordEditorModelObserver::RowCount() const {
+ return [controller_ controller]->table_model()->RowCount();
+}
+
+SkBitmap KeywordEditorModelObserver::GetIcon(int row) const {
+ return [controller_ controller]->table_model()->GetIcon(row);
+}
+
NSImage* KeywordEditorModelObserver::GetImageForRow(int row) {
- DCHECK_EQ([controller_ controller]->table_model()->RowCount(),
- static_cast<int>([iconImages_ count]));
- DCHECK_GE(row, 0);
- DCHECK_LT(row, static_cast<int>([iconImages_ count]));
- NSImage* image = static_cast<NSImage*>([iconImages_ pointerAtIndex:row]);
- if (!image) {
- const SkBitmap bitmapIcon =
- [controller_ controller]->table_model()->GetIcon(row);
- if (!bitmapIcon.isNull()) {
- image = gfx::SkBitmapToNSImage(bitmapIcon);
- DCHECK(image);
- [iconImages_ replacePointerAtIndex:row withPointer:image];
- }
- }
- return image;
+ return icon_cache_.GetImageForRow(row);
}
// KeywordEditorCocoaController -----------------------------------------------