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

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

Issue 10534174: platform apps: use app name for WebRTC balloons (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review Created 8 years, 5 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
« no previous file with comments | « chrome/browser/media/media_stream_capture_indicator.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 9467b7e60516654c23fd79697f47d10bb2a24984..5511ad2cef66797fa7ac05c80cc0d4e57aa40aec 100644
--- a/chrome/browser/media/media_stream_capture_indicator.cc
+++ b/chrome/browser/media/media_stream_capture_indicator.cc
@@ -9,6 +9,8 @@
#include "base/utf_string_conversions.h"
#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/browser_process.h"
+#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/status_icons/status_icon.h"
#include "chrome/browser/status_icons/status_tray.h"
#include "chrome/browser/tab_contents/tab_util.h"
@@ -27,6 +29,83 @@
using content::BrowserThread;
using content::WebContents;
+namespace {
+
+const extensions::Extension* GetExtension(int render_process_id,
+ int render_view_id) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
+ WebContents* web_contents = tab_util::GetWebContentsByID(
+ render_process_id, render_view_id);
+ if (!web_contents)
+ return NULL;
+
+ Profile* profile =
+ Profile::FromBrowserContext(web_contents->GetBrowserContext());
+ if (!profile)
+ return NULL;
+
+ ExtensionService* extensions = profile->GetExtensionService();
Mihai Parparita -not on Chrome 2012/08/01 05:12:37 Nit: can you call this extensions_service, so that
Evan Stade 2012/08/07 02:18:32 Done.
+ if (!extensions)
+ return NULL;
+
+ return extensions->extensions()->GetExtensionOrAppByURL(
+ ExtensionURLInfo(web_contents->GetURL()));
+}
+
+// Gets the security originator of the tab. It returns a string with no '/'
+// at the end to display in the UI.
+string16 GetSecurityOrigin(int render_process_id, int render_view_id) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ WebContents* tab_content = tab_util::GetWebContentsByID(
+ render_process_id, render_view_id);
+ if (!tab_content)
+ return string16();
+
+ std::string security_origin = tab_content->GetURL().GetOrigin().spec();
+
+ // Remove the last character if it is a '/'.
+ if (!security_origin.empty()) {
+ std::string::iterator it = security_origin.end() - 1;
+ if (*it == '/')
+ security_origin.erase(it);
+ }
+
+ return UTF8ToUTF16(security_origin);
+}
+
+string16 GetTitle(int render_process_id, int render_view_id) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
+ const extensions::Extension* extension =
+ GetExtension(render_process_id, render_view_id);
+ if (extension)
+ return UTF8ToUTF16(extension->name());
+
+ WebContents* tab_content = tab_util::GetWebContentsByID(
+ render_process_id, render_view_id);
+ if (!tab_content)
+ return string16();
+
+ string16 tab_title = tab_content->GetTitle();
+
+ if (tab_title.empty()) {
+ // If the page's title is empty use its security originator.
+ tab_title = GetSecurityOrigin(render_process_id, render_view_id);
+ } else {
+ // If the page's title matches its URL, use its security originator.
+ std::string languages =
+ content::GetContentClient()->browser()->GetAcceptLangs(
+ tab_content->GetBrowserContext());
+ if (tab_title == net::FormatUrl(tab_content->GetURL(), languages))
+ tab_title = GetSecurityOrigin(render_process_id, render_view_id);
+ }
+
+ return tab_title;
+}
+
+} // namespace
+
MediaStreamCaptureIndicator::TabEquals::TabEquals(int render_process_id,
int render_view_id)
: render_process_id_(render_process_id),
@@ -42,7 +121,8 @@ MediaStreamCaptureIndicator::MediaStreamCaptureIndicator()
: status_icon_(NULL),
mic_image_(NULL),
camera_image_(NULL),
- balloon_image_(NULL) {
+ balloon_image_(NULL),
+ ALLOW_THIS_IN_INITIALIZER_LIST(tracker_(this)) {
}
MediaStreamCaptureIndicator::~MediaStreamCaptureIndicator() {
@@ -178,10 +258,9 @@ void MediaStreamCaptureIndicator::ShowBalloon(
int render_process_id,
int render_view_id,
bool audio,
- bool video) const {
+ bool video) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(audio || video);
- string16 title = l10n_util::GetStringUTF16(IDS_PRODUCT_NAME);
int message_id = IDS_MEDIA_STREAM_STATUS_TRAY_BALLOON_BODY_AUDIO_AND_VIDEO;
if (audio && !video)
@@ -189,12 +268,41 @@ void MediaStreamCaptureIndicator::ShowBalloon(
else if (!audio && video)
message_id = IDS_MEDIA_STREAM_STATUS_TRAY_BALLOON_BODY_VIDEO_ONLY;
- string16 body = l10n_util::GetStringFUTF16(
- message_id, GetSecurityOrigin(render_process_id, render_view_id));
+ const extensions::Extension* extension =
+ GetExtension(render_process_id, render_view_id);
+ if (extension) {
+ pending_messages_.push_back(
+ l10n_util::GetStringFUTF16(message_id,
+ UTF8ToUTF16(extension->name())));
+ tracker_.LoadImage(
+ extension,
+ extension->GetIconResource(32, ExtensionIconSet::MATCH_BIGGER),
+ gfx::Size(32, 32),
+ ImageLoadingTracker::CACHE);
+ return;
+ }
+ string16 title = l10n_util::GetStringUTF16(IDS_PRODUCT_NAME);
+ string16 body = l10n_util::GetStringFUTF16(message_id,
+ GetSecurityOrigin(render_process_id, render_view_id));
status_icon_->DisplayBalloon(*balloon_image_, title, body);
}
+void MediaStreamCaptureIndicator::OnImageLoaded(
+ const gfx::Image& image,
+ const std::string& extension_id,
+ int index) {
+ string16 message;
+ message.swap(pending_messages_[index]);
Evan Stade 2012/07/31 23:19:29 this leaks... the vector never gets smaller. But i
scherkus (not reviewing) 2012/08/01 00:18:17 I'm not super familiar with ImageLoadingTracker bu
no longer working on chromium 2012/08/01 07:54:14 should we just use erase to completely delete the
Evan Stade 2012/08/01 22:25:15 erase will move the rest of the elements in the ve
scherkus (not reviewing) 2012/08/01 22:40:08 I was thinking ImageLoadingTracker::Observer could
+
+ status_icon_->DisplayBalloon(
+ !image.IsEmpty() ? *image.ToImageSkia() :
+ *ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
+ IDR_APP_DEFAULT_ICON),
+ string16(),
+ message);
+}
+
void MediaStreamCaptureIndicator::Hide() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
if (!status_icon_)
@@ -335,47 +443,3 @@ void MediaStreamCaptureIndicator::RemoveCaptureDeviceTab(
UpdateStatusTrayIconContextMenu();
}
-string16 MediaStreamCaptureIndicator::GetTitle(int render_process_id,
- int render_view_id) const {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- WebContents* tab_content = tab_util::GetWebContentsByID(
- render_process_id, render_view_id);
- if (!tab_content)
- return string16();
-
- string16 tab_title = tab_content->GetTitle();
-
- if (tab_title.empty()) {
- // If the page's title is empty use its security originator.
- tab_title = GetSecurityOrigin(render_process_id, render_view_id);
- } else {
- // If the page's title matches its URL, use its security originator.
- std::string languages =
- content::GetContentClient()->browser()->GetAcceptLangs(
- tab_content->GetBrowserContext());
- if (tab_title == net::FormatUrl(tab_content->GetURL(), languages))
- tab_title = GetSecurityOrigin(render_process_id, render_view_id);
- }
-
- return tab_title;
-}
-
-string16 MediaStreamCaptureIndicator::GetSecurityOrigin(
- int render_process_id, int render_view_id) const {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- WebContents* tab_content = tab_util::GetWebContentsByID(
- render_process_id, render_view_id);
- if (!tab_content)
- return string16();
-
- std::string security_origin = tab_content->GetURL().GetOrigin().spec();
-
- // Remove the last character if it is a '/'.
- if (!security_origin.empty()) {
- std::string::iterator it = security_origin.end() - 1;
- if (*it == '/')
- security_origin.erase(it);
- }
-
- return UTF8ToUTF16(security_origin);
-}
« no previous file with comments | « chrome/browser/media/media_stream_capture_indicator.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698