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

Unified Diff: chrome/browser/media/media_stream_capture_indicator.cc

Issue 11027044: Add a class to replace ImageLoadingTracker with a nicer API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/media/media_stream_capture_indicator.cc
diff --git a/chrome/browser/media/media_stream_capture_indicator.cc b/chrome/browser/media/media_stream_capture_indicator.cc
index b5a7bac618ed929a1e23c390362cd6bcf70d1c83..fd2f5b15d56e8c698dfb741ba57bf62d381a2291 100644
--- a/chrome/browser/media/media_stream_capture_indicator.cc
+++ b/chrome/browser/media/media_stream_capture_indicator.cc
@@ -11,6 +11,7 @@
#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/extensions/image_utils.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/status_icons/status_icon.h"
#include "chrome/browser/status_icons/status_tray.h"
@@ -124,7 +125,7 @@ MediaStreamCaptureIndicator::MediaStreamCaptureIndicator()
mic_image_(NULL),
camera_image_(NULL),
balloon_image_(NULL),
- request_index_(0) {
+ icon_tracker_(this) {
}
MediaStreamCaptureIndicator::~MediaStreamCaptureIndicator() {
@@ -234,7 +235,6 @@ void MediaStreamCaptureIndicator::CreateStatusTray() {
status_icon_ = status_tray->CreateStatusIcon();
EnsureStatusTrayIconResources();
- EnsureImageLoadingTracker();
}
void MediaStreamCaptureIndicator::EnsureStatusTrayIconResources() {
@@ -273,14 +273,16 @@ void MediaStreamCaptureIndicator::ShowBalloon(
const extensions::Extension* extension =
GetExtension(render_process_id, render_view_id);
if (extension) {
- pending_messages_[request_index_++] =
+ string16 message =
l10n_util::GetStringFUTF16(message_id,
UTF8ToUTF16(extension->name()));
- tracker_->LoadImage(
+ // TODO(mek): This used to use ImageLoadingTrackers caching.
+ extension_image_utils::LoadImageAsync(
extension,
extension->GetIconResource(32, ExtensionIconSet::MATCH_BIGGER),
gfx::Size(32, 32),
- ImageLoadingTracker::CACHE);
+ base::Bind(&MediaStreamCaptureIndicator::OnImageLoaded,
+ icon_tracker_.GetWeakPtr(), message));
return;
}
@@ -291,13 +293,8 @@ void MediaStreamCaptureIndicator::ShowBalloon(
}
void MediaStreamCaptureIndicator::OnImageLoaded(
- const gfx::Image& image,
- const std::string& extension_id,
- int index) {
- string16 message;
- message.swap(pending_messages_[index]);
- pending_messages_.erase(index);
-
+ const string16& message,
+ const gfx::Image& image) {
const gfx::ImageSkia* image_skia = !image.IsEmpty() ? image.ToImageSkia() :
ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
IDR_APP_DEFAULT_ICON);
@@ -308,8 +305,8 @@ void MediaStreamCaptureIndicator::Hide() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(tabs_.empty());
- // We have to destroy |tracker_| on the UI thread.
- tracker_.reset();
+ // Make sure no more image loaded messages get delivered.
+ icon_tracker_.InvalidateWeakPtrs();
if (!status_icon_)
return;
@@ -450,13 +447,3 @@ void MediaStreamCaptureIndicator::RemoveCaptureDeviceTab(
UpdateStatusTrayIconContextMenu();
}
-
-void MediaStreamCaptureIndicator::EnsureImageLoadingTracker() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (tracker_.get())
- return;
-
- tracker_.reset(new ImageLoadingTracker(this));
- pending_messages_.clear();
- request_index_ = 0;
-}

Powered by Google App Engine
This is Rietveld 408576698