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

Side by Side Diff: chrome/browser/cocoa/location_bar_view_mac.mm

Issue 1075006: Eliminate all UI thread decoding of extension images.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 9 months 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 #import "chrome/browser/cocoa/location_bar_view_mac.h" 5 #import "chrome/browser/cocoa/location_bar_view_mac.h"
6 6
7 #include "app/l10n_util_mac.h" 7 #include "app/l10n_util_mac.h"
8 #include "app/resource_bundle.h" 8 #include "app/resource_bundle.h"
9 #include "base/i18n/rtl.h" 9 #include "base/i18n/rtl.h"
10 #include "base/nsimage_cache_mac.h" 10 #include "base/nsimage_cache_mac.h"
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 611
612 // PageActionImageView---------------------------------------------------------- 612 // PageActionImageView----------------------------------------------------------
613 613
614 LocationBarViewMac::PageActionImageView::PageActionImageView( 614 LocationBarViewMac::PageActionImageView::PageActionImageView(
615 LocationBarViewMac* owner, 615 LocationBarViewMac* owner,
616 Profile* profile, 616 Profile* profile,
617 ExtensionAction* page_action) 617 ExtensionAction* page_action)
618 : owner_(owner), 618 : owner_(owner),
619 profile_(profile), 619 profile_(profile),
620 page_action_(page_action), 620 page_action_(page_action),
621 tracker_(this),
621 current_tab_id_(-1), 622 current_tab_id_(-1),
622 preview_enabled_(false) { 623 preview_enabled_(false) {
623 Extension* extension = profile->GetExtensionsService()->GetExtensionById( 624 Extension* extension = profile->GetExtensionsService()->GetExtensionById(
624 page_action->extension_id(), false); 625 page_action->extension_id(), false);
625 DCHECK(extension); 626 DCHECK(extension);
626 627
627 // Load all the icons declared in the manifest. This is the contents of the 628 // Load all the icons declared in the manifest. This is the contents of the
628 // icons array, plus the default_icon property, if any. 629 // icons array, plus the default_icon property, if any.
629 std::vector<std::string> icon_paths(*page_action->icon_paths()); 630 std::vector<std::string> icon_paths(*page_action->icon_paths());
630 if (!page_action_->default_icon_path().empty()) 631 if (!page_action_->default_icon_path().empty())
631 icon_paths.push_back(page_action_->default_icon_path()); 632 icon_paths.push_back(page_action_->default_icon_path());
632 633
633 tracker_ = new ImageLoadingTracker(this, icon_paths.size());
634 for (std::vector<std::string>::iterator iter = icon_paths.begin(); 634 for (std::vector<std::string>::iterator iter = icon_paths.begin();
635 iter != icon_paths.end(); ++iter) { 635 iter != icon_paths.end(); ++iter) {
636 tracker_->PostLoadImageTask(extension->GetResource(*iter), 636 tracker_.LoadImage(extension->GetResource(*iter),
637 gfx::Size(Extension::kPageActionIconMaxSize, 637 gfx::Size(Extension::kPageActionIconMaxSize,
638 Extension::kPageActionIconMaxSize)); 638 Extension::kPageActionIconMaxSize));
639 } 639 }
640 640
641 registrar_.Add(this, NotificationType::EXTENSION_HOST_VIEW_SHOULD_CLOSE, 641 registrar_.Add(this, NotificationType::EXTENSION_HOST_VIEW_SHOULD_CLOSE,
642 Source<Profile>(profile_)); 642 Source<Profile>(profile_));
643 } 643 }
644 644
645 LocationBarViewMac::PageActionImageView::~PageActionImageView() { 645 LocationBarViewMac::PageActionImageView::~PageActionImageView() {
646 if (tracker_)
647 tracker_->StopTrackingImageLoad();
648 } 646 }
649 647
650 NSSize LocationBarViewMac::PageActionImageView::GetPreferredImageSize() { 648 NSSize LocationBarViewMac::PageActionImageView::GetPreferredImageSize() {
651 NSImage* image = GetImage(); 649 NSImage* image = GetImage();
652 if (image) { 650 if (image) {
653 return [image size]; 651 return [image size];
654 } else { 652 } else {
655 return NSMakeSize(Extension::kPageActionIconMaxSize, 653 return NSMakeSize(Extension::kPageActionIconMaxSize,
656 Extension::kPageActionIconMaxSize); 654 Extension::kPageActionIconMaxSize);
657 } 655 }
(...skipping 24 matching lines...) Expand all
682 anchoredAt:arrowPoint 680 anchoredAt:arrowPoint
683 arrowLocation:kTopRight]; 681 arrowLocation:kTopRight];
684 } else { 682 } else {
685 ExtensionBrowserEventRouter::GetInstance()->PageActionExecuted( 683 ExtensionBrowserEventRouter::GetInstance()->PageActionExecuted(
686 profile_, page_action_->extension_id(), page_action_->id(), 684 profile_, page_action_->extension_id(), page_action_->id(),
687 current_tab_id_, current_url_.spec(), 685 current_tab_id_, current_url_.spec(),
688 1); 686 1);
689 } 687 }
690 } 688 }
691 689
692 void LocationBarViewMac::PageActionImageView::OnImageLoaded(SkBitmap* image, 690 void LocationBarViewMac::PageActionImageView::OnImageLoaded(
693 size_t index) { 691 SkBitmap* image, ExtensionResource resource, int index) {
694 // We loaded icons()->size() icons, plus one extra if the Page Action had 692 // We loaded icons()->size() icons, plus one extra if the Page Action had
695 // a default icon. 693 // a default icon.
696 int total_icons = page_action_->icon_paths()->size(); 694 int total_icons = static_cast<int>(page_action_->icon_paths()->size());
697 if (!page_action_->default_icon_path().empty()) 695 if (!page_action_->default_icon_path().empty())
698 total_icons++; 696 total_icons++;
699 DCHECK(static_cast<int>(index) < total_icons); 697 DCHECK(index < total_icons);
700 698
701 // Map the index of the loaded image back to its name. If we ever get an 699 // Map the index of the loaded image back to its name. If we ever get an
702 // index greater than the number of icons, it must be the default icon. 700 // index greater than the number of icons, it must be the default icon.
703 if (image) { 701 if (image) {
704 if (index < page_action_->icon_paths()->size()) 702 if (index < static_cast<int>(page_action_->icon_paths()->size()))
705 page_action_icons_[page_action_->icon_paths()->at(index)] = *image; 703 page_action_icons_[page_action_->icon_paths()->at(index)] = *image;
706 else 704 else
707 page_action_icons_[page_action_->default_icon_path()] = *image; 705 page_action_icons_[page_action_->default_icon_path()] = *image;
708 } 706 }
709 707
710 // If we are done, release the tracker.
711 if (static_cast<int>(index) == (total_icons - 1))
712 tracker_ = NULL;
713
714 owner_->UpdatePageActions(); 708 owner_->UpdatePageActions();
715 709
716 if (preview_enabled_) 710 if (preview_enabled_)
717 [owner_->GetAutocompleteTextField() display]; 711 [owner_->GetAutocompleteTextField() display];
718 } 712 }
719 713
720 void LocationBarViewMac::PageActionImageView::UpdateVisibility( 714 void LocationBarViewMac::PageActionImageView::UpdateVisibility(
721 TabContents* contents, const GURL& url) { 715 TabContents* contents, const GURL& url) {
722 // Save this off so we can pass it back to the extension when the action gets 716 // Save this off so we can pass it back to the extension when the action gets
723 // executed. See PageActionImageView::OnMousePressed. 717 // executed. See PageActionImageView::OnMousePressed.
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
951 ++result; 945 ++result;
952 } 946 }
953 return result; 947 return result;
954 } 948 }
955 949
956 void LocationBarViewMac::PageActionViewList::OnMousePressed(NSRect iconFrame, 950 void LocationBarViewMac::PageActionViewList::OnMousePressed(NSRect iconFrame,
957 size_t index) { 951 size_t index) {
958 ViewAt(index)->OnMousePressed(iconFrame); 952 ViewAt(index)->OnMousePressed(iconFrame);
959 } 953 }
960 954
OLDNEW
« no previous file with comments | « chrome/browser/cocoa/location_bar_view_mac.h ('k') | chrome/browser/extensions/crx_installer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698