Index: chrome/browser/extensions/api/desktop_capture/desktop_capture_api.cc |
diff --git a/chrome/browser/extensions/api/desktop_capture/desktop_capture_api.cc b/chrome/browser/extensions/api/desktop_capture/desktop_capture_api.cc |
index fb94f77f45c7c90e5e4a97b16989ce42a7bef453..9cd24f25f06242ef0d70b9abd83c64bd403c495f 100644 |
--- a/chrome/browser/extensions/api/desktop_capture/desktop_capture_api.cc |
+++ b/chrome/browser/extensions/api/desktop_capture/desktop_capture_api.cc |
@@ -16,6 +16,7 @@ |
#include "content/public/browser/render_view_host.h" |
#include "content/public/browser/web_contents.h" |
#include "content/public/browser/web_contents_view.h" |
+#include "third_party/webrtc/modules/desktop_capture/desktop_capture_options.h" |
#include "third_party/webrtc/modules/desktop_capture/screen_capturer.h" |
#include "third_party/webrtc/modules/desktop_capture/window_capturer.h" |
@@ -126,8 +127,9 @@ bool DesktopCaptureChooseDesktopMediaFunction::RunImpl() { |
render_process_id_ = render_view->GetProcess()->GetID(); |
render_view_id_ = render_view->GetRoutingID(); |
- scoped_ptr<webrtc::ScreenCapturer> screen_capturer; |
- scoped_ptr<webrtc::WindowCapturer> window_capturer; |
+ |
+ bool show_screens = false; |
+ bool show_windows = false; |
for (std::vector<api::desktop_capture::DesktopCaptureSourceType>::iterator |
it = params->sources.begin(); it != params->sources.end(); ++it) { |
@@ -137,17 +139,11 @@ bool DesktopCaptureChooseDesktopMediaFunction::RunImpl() { |
return false; |
case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_SCREEN: |
-#if defined(OS_WIN) |
- // ScreenCapturerWin disables Aero by default. |
- screen_capturer.reset( |
- webrtc::ScreenCapturer::CreateWithDisableAero(false)); |
-#else |
- screen_capturer.reset(webrtc::ScreenCapturer::Create()); |
-#endif |
+ show_screens = true; |
break; |
case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_WINDOW: |
- window_capturer.reset(webrtc::WindowCapturer::Create()); |
+ show_windows = true; |
break; |
case api::desktop_capture::DESKTOP_CAPTURE_SOURCE_TYPE_TAB: |
@@ -156,7 +152,7 @@ bool DesktopCaptureChooseDesktopMediaFunction::RunImpl() { |
} |
} |
- if (!screen_capturer && !window_capturer) { |
+ if (!show_screens && !show_windows) { |
error_ = kEmptySourcesListError; |
return false; |
} |
@@ -164,19 +160,25 @@ bool DesktopCaptureChooseDesktopMediaFunction::RunImpl() { |
scoped_ptr<DesktopMediaList> media_list; |
if (g_picker_factory) { |
media_list = g_picker_factory->CreateModel( |
- screen_capturer.Pass(), window_capturer.Pass()); |
+ show_screens, show_windows); |
picker_ = g_picker_factory->CreatePicker(); |
} else { |
// DesktopMediaPicker is implemented only for Windows, OSX and |
// Aura Linux builds. |
#if (defined(TOOLKIT_VIEWS) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) |
+ webrtc::DesktopCaptureOptions options = |
+ webrtc::DesktopCaptureOptions::CreateDefault(); |
+ options.set_disable_effects(false); |
+ scoped_ptr<webrtc::ScreenCapturer> screen_capturer( |
+ show_screens ? webrtc::ScreenCapturer::Create(options) : NULL); |
+ scoped_ptr<webrtc::WindowCapturer> window_capturer( |
+ show_windows ? webrtc::WindowCapturer::Create(options) : NULL); |
+ |
media_list.reset(new NativeDesktopMediaList( |
screen_capturer.Pass(), window_capturer.Pass())); |
picker_ = DesktopMediaPicker::Create(); |
#else |
- const char kNotImplementedError[] = |
- "Desktop Capture API is not yet implemented for this platform."; |
- error_ = kNotImplementedError; |
+ error_ = "Desktop Capture API is not yet implemented for this platform."; |
return false; |
#endif |
} |