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

Unified Diff: chrome/browser/ui/views/desktop_media_picker_views.cc

Issue 1576073003: Support Audio for Desktop Capture (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 11 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/ui/views/desktop_media_picker_views.cc
diff --git a/chrome/browser/ui/views/desktop_media_picker_views.cc b/chrome/browser/ui/views/desktop_media_picker_views.cc
index 2614f56088103a2849e8d0ee12042d020ab0c801..b8ab07751a649e1fa8fc31be3abb5b3f2d13e7ef 100644
--- a/chrome/browser/ui/views/desktop_media_picker_views.cc
+++ b/chrome/browser/ui/views/desktop_media_picker_views.cc
@@ -11,14 +11,19 @@
#include "base/command_line.h"
#include "base/strings/utf_string_conversions.h"
#include "build/build_config.h"
+#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/media/desktop_media_list.h"
+#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/ash/ash_util.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/grit/generated_resources.h"
#include "components/constrained_window/constrained_window_views.h"
+#include "components/content_settings/core/browser/host_content_settings_map.h"
+#include "components/content_settings/core/common/content_settings.h"
#include "components/web_modal/web_contents_modal_dialog_manager.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_contents_delegate.h"
+#include "content/public/common/content_switches.h"
#include "grit/components_strings.h"
#include "ui/aura/window_tree_host.h"
#include "ui/base/l10n/l10n_util.h"
@@ -28,6 +33,7 @@
#include "ui/native_theme/native_theme.h"
#include "ui/views/background.h"
#include "ui/views/bubble/bubble_frame_view.h"
+#include "ui/views/controls/button/checkbox.h"
#include "ui/views/controls/image_view.h"
#include "ui/views/controls/label.h"
#include "ui/views/controls/scroll_view.h"
@@ -390,10 +396,13 @@ DesktopMediaPickerDialogView::DesktopMediaPickerDialogView(
const base::string16& target_name,
scoped_ptr<DesktopMediaList> media_list)
: parent_(parent),
+ web_contents_(parent_web_contents),
GeorgeZ 2016/01/15 16:37:55 parent_web_contents_(parent_web_contents) probably
qiangchen 2016/01/15 18:19:40 Done.
app_name_(app_name),
label_(new views::Label()),
scroll_view_(views::ScrollView::CreateScrollViewWithBorder()),
- list_view_(new DesktopMediaListView(this, std::move(media_list))) {
+ list_view_(new DesktopMediaListView(this, std::move(media_list))),
+ checkbox_(new views::Checkbox(
+ l10n_util::GetStringUTF16(IDS_DESTOP_MEDIA_PICKER_ALLOW_AUDIO))) {
GeorgeZ 2016/01/15 16:37:55 Spell error. Change to IDS_DESKTOP_MEDIA_PICKER_AL
qiangchen 2016/01/15 18:19:40 Done.
if (app_name == target_name) {
label_->SetText(
l10n_util::GetStringFUTF16(IDS_DESKTOP_MEDIA_PICKER_TEXT, app_name));
@@ -405,6 +414,28 @@ DesktopMediaPickerDialogView::DesktopMediaPickerDialogView(
label_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
AddChildView(label_);
+ audio_support_ = base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kEnableAudioSupportForDesktopShare);
+
+ if (audio_support_) {
+ checkbox_->SetElideBehavior(gfx::ELIDE_MIDDLE);
+ AddChildView(checkbox_);
+
+ Profile* profile =
+ Profile::FromBrowserContext(web_contents_->GetBrowserContext());
+
+ GURL origin(parent_web_contents->GetLastCommittedURL().GetOrigin());
GeorgeZ 2016/01/15 16:37:55 Is it possible change to const GURL?
qiangchen 2016/01/15 18:19:40 Done.
+
+ ContentSetting result =
+ HostContentSettingsMapFactory::GetForProfile(profile)
+ ->GetContentSetting(
+ origin, origin,
+ ContentSettingsType::CONTENT_SETTINGS_TYPE_DESKTOP_AUDIO_SHARE,
+ std::string());
+
+ checkbox_->SetChecked(result == ContentSetting::CONTENT_SETTING_ALLOW);
+ }
+
scroll_view_->SetContents(list_view_);
scroll_view_->ClipHeightTo(
GetMediaListViewHeightForRows(1), GetMediaListViewHeightForRows(2));
@@ -461,9 +492,12 @@ gfx::Size DesktopMediaPickerDialogView::GetPreferredSize() const {
size_t label_height =
label_->GetHeightForWidth(kDialogViewWidth - title_insets.height() * 2);
+ size_t checkbox_height =
+ audio_support_ ? checkbox_->GetPreferredSize().height() : 0;
+
return gfx::Size(kDialogViewWidth,
views::kPanelVertMargin * 2 + label_height +
- views::kPanelVerticalSpacing +
+ checkbox_height + views::kPanelVerticalSpacing +
scroll_view_->GetPreferredSize().height());
}
@@ -478,6 +512,14 @@ void DesktopMediaPickerDialogView::Layout() {
label_->GetHeightForWidth(rect.width()));
label_->SetBoundsRect(label_rect);
+ if (audio_support_) {
+ gfx::Rect checkbox_rect(rect.x(),
+ label_rect.bottom() + views::kPanelVertMargin,
+ checkbox_->GetPreferredSize().width(),
+ checkbox_->GetPreferredSize().height());
+ checkbox_->SetBoundsRect(checkbox_rect);
+ }
+
int scroll_view_top = label_rect.bottom() + views::kPanelVerticalSpacing;
scroll_view_->SetBounds(
rect.x(), scroll_view_top,
@@ -519,6 +561,25 @@ bool DesktopMediaPickerDialogView::Accept() {
if (selection)
source = selection->source_id();
+ if (audio_support_) {
+ Profile* profile =
+ Profile::FromBrowserContext(web_contents_->GetBrowserContext());
+
+ GURL origin(web_contents_->GetLastCommittedURL().GetOrigin());
+
+ ContentSettingsPattern pattern =
+ ContentSettingsPattern::FromURLNoWildcard(origin);
+
+ ContentSetting result = checkbox_->checked()
+ ? ContentSetting::CONTENT_SETTING_ALLOW
+ : ContentSetting::CONTENT_SETTING_BLOCK;
+
+ HostContentSettingsMapFactory::GetForProfile(profile)->SetContentSetting(
+ pattern, pattern,
+ ContentSettingsType::CONTENT_SETTINGS_TYPE_DESKTOP_AUDIO_SHARE,
+ std::string(), result);
+ }
+
if (parent_)
parent_->NotifyDialogResult(source);

Powered by Google App Engine
This is Rietveld 408576698