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

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: fix include order Created 8 years, 1 month 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 244235c3dbaeb3d0ff4973af1d636b2963d96459..87266acdb28a8b9cf17f7c4157d43742b6940349 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_loader.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/status_icons/status_icon.h"
#include "chrome/browser/status_icons/status_tray.h"
@@ -125,7 +126,7 @@ MediaStreamCaptureIndicator::MediaStreamCaptureIndicator()
mic_image_(NULL),
camera_image_(NULL),
balloon_image_(NULL),
- request_index_(0) {
+ should_show_balloon_(false) {
}
MediaStreamCaptureIndicator::~MediaStreamCaptureIndicator() {
@@ -228,7 +229,6 @@ void MediaStreamCaptureIndicator::CreateStatusTray() {
status_icon_ = status_tray->CreateStatusIcon();
EnsureStatusTrayIconResources();
- EnsureImageLoadingTracker();
}
void MediaStreamCaptureIndicator::EnsureStatusTrayIconResources() {
@@ -267,14 +267,23 @@ 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(
+
+ WebContents* web_contents = tab_util::GetWebContentsByID(
+ render_process_id, render_view_id);
+
+ Profile* profile =
+ Profile::FromBrowserContext(web_contents->GetBrowserContext());
+
+ should_show_balloon_ = true;
+ extensions::ImageLoader::Get(profile)->LoadImageAsync(
extension,
extension->GetIconResource(32, ExtensionIconSet::MATCH_BIGGER),
gfx::Size(32, 32),
- ImageLoadingTracker::CACHE);
+ base::Bind(&MediaStreamCaptureIndicator::OnImageLoaded,
+ this, message));
return;
}
@@ -285,12 +294,10 @@ 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) {
+ if (!should_show_balloon_)
+ return;
const gfx::ImageSkia* image_skia = !image.IsEmpty() ? image.ToImageSkia() :
ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
@@ -302,8 +309,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 images that finish loading don't cause a balloon to be shown.
+ should_show_balloon_ = false;
if (!status_icon_)
return;
@@ -468,13 +475,3 @@ bool MediaStreamCaptureIndicator::IsProcessCapturing(int render_process_id,
return false;
return (iter->audio_ref_count > 0 || iter->video_ref_count > 0);
}
-
-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