summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/extensions/api/desktop_capture/desktop_capture_api.cc32
-rw-r--r--chrome/browser/extensions/api/desktop_capture/desktop_capture_api.h5
-rw-r--r--chrome/browser/extensions/api/desktop_capture/desktop_capture_apitest.cc15
-rw-r--r--chrome/browser/media/fake_desktop_media_list.cc59
-rw-r--r--chrome/browser/media/fake_desktop_media_list.h37
-rw-r--r--chrome/browser/ui/cocoa/media_picker/desktop_media_picker_controller_unittest.mm66
-rw-r--r--chrome/chrome_tests_unit.gypi2
7 files changed, 124 insertions, 92 deletions
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 fb94f77..9cd24f25 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
}
diff --git a/chrome/browser/extensions/api/desktop_capture/desktop_capture_api.h b/chrome/browser/extensions/api/desktop_capture/desktop_capture_api.h
index 5842684..4268316 100644
--- a/chrome/browser/extensions/api/desktop_capture/desktop_capture_api.h
+++ b/chrome/browser/extensions/api/desktop_capture/desktop_capture_api.h
@@ -27,9 +27,8 @@ class DesktopCaptureChooseDesktopMediaFunction
// Used for tests to supply fake picker.
class PickerFactory {
public:
- virtual scoped_ptr<DesktopMediaList> CreateModel(
- scoped_ptr<webrtc::ScreenCapturer> screen_capturer,
- scoped_ptr<webrtc::WindowCapturer> window_capturer) = 0;
+ virtual scoped_ptr<DesktopMediaList> CreateModel(bool show_screens,
+ bool show_windows) = 0;
virtual scoped_ptr<DesktopMediaPicker> CreatePicker() = 0;
protected:
virtual ~PickerFactory() {}
diff --git a/chrome/browser/extensions/api/desktop_capture/desktop_capture_apitest.cc b/chrome/browser/extensions/api/desktop_capture/desktop_capture_apitest.cc
index ebc7e5d..4bbe02b 100644
--- a/chrome/browser/extensions/api/desktop_capture/desktop_capture_apitest.cc
+++ b/chrome/browser/extensions/api/desktop_capture/desktop_capture_apitest.cc
@@ -9,7 +9,7 @@
#include "base/thread_task_runner_handle.h"
#include "chrome/browser/extensions/api/desktop_capture/desktop_capture_api.h"
#include "chrome/browser/extensions/extension_apitest.h"
-#include "chrome/browser/media/desktop_media_picker.h"
+#include "chrome/browser/media/fake_desktop_media_list.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
@@ -17,8 +17,6 @@
#include "content/public/test/browser_test_utils.h"
#include "net/dns/mock_host_resolver.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
-#include "third_party/webrtc/modules/desktop_capture/screen_capturer.h"
-#include "third_party/webrtc/modules/desktop_capture/window_capturer.h"
namespace extensions {
@@ -88,15 +86,14 @@ class FakeDesktopMediaPickerFactory :
// DesktopCaptureChooseDesktopMediaFunction::PickerFactory interface.
virtual scoped_ptr<DesktopMediaList> CreateModel(
- scoped_ptr<webrtc::ScreenCapturer> screen_capturer,
- scoped_ptr<webrtc::WindowCapturer> window_capturer) OVERRIDE {
+ bool show_screens,
+ bool show_windows) OVERRIDE {
EXPECT_TRUE(!expectations_.empty());
if (!expectations_.empty()) {
- EXPECT_EQ(expectations_.front().screens, !!screen_capturer.get());
- EXPECT_EQ(expectations_.front().windows, !!window_capturer.get());
+ EXPECT_EQ(expectations_.front().screens, show_screens);
+ EXPECT_EQ(expectations_.front().windows, show_windows);
}
- return scoped_ptr<DesktopMediaList>(new NativeDesktopMediaList(
- screen_capturer.Pass(), window_capturer.Pass()));
+ return scoped_ptr<DesktopMediaList>(new FakeDesktopMediaList());
}
virtual scoped_ptr<DesktopMediaPicker> CreatePicker() OVERRIDE {
content::DesktopMediaID next_source;
diff --git a/chrome/browser/media/fake_desktop_media_list.cc b/chrome/browser/media/fake_desktop_media_list.cc
new file mode 100644
index 0000000..3350e91
--- /dev/null
+++ b/chrome/browser/media/fake_desktop_media_list.cc
@@ -0,0 +1,59 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/media/fake_desktop_media_list.h"
+
+#include "chrome/browser/media/desktop_media_list_observer.h"
+#include "ui/gfx/skia_util.h"
+
+FakeDesktopMediaList::FakeDesktopMediaList() : observer_(NULL) {}
+FakeDesktopMediaList::~FakeDesktopMediaList() {}
+
+void FakeDesktopMediaList::AddSource(int id) {
+ Source source;
+ source.id = content::DesktopMediaID(content::DesktopMediaID::TYPE_WINDOW, id);
+ source.name = base::Int64ToString16(id);
+
+ sources_.push_back(source);
+ observer_->OnSourceAdded(sources_.size() - 1);
+}
+
+void FakeDesktopMediaList::RemoveSource(int index) {
+ sources_.erase(sources_.begin() + index);
+ observer_->OnSourceRemoved(sources_.size() - 1);
+}
+
+void FakeDesktopMediaList::SetSourceThumbnail(int index) {
+ sources_[index].thumbnail = thumbnail_;
+ observer_->OnSourceThumbnailChanged(index);
+}
+
+void FakeDesktopMediaList::SetSourceName(int index, string16 name) {
+ sources_[index].name = name;
+ observer_->OnSourceNameChanged(index);
+}
+
+void FakeDesktopMediaList::SetUpdatePeriod(base::TimeDelta period) {}
+
+void FakeDesktopMediaList::SetThumbnailSize(const gfx::Size& thumbnail_size) {}
+
+void FakeDesktopMediaList::SetViewDialogWindowId(
+ content::DesktopMediaID::Id dialog_id) {}
+
+void FakeDesktopMediaList::StartUpdating(DesktopMediaListObserver* observer) {
+ observer_ = observer;
+
+ SkBitmap bitmap;
+ bitmap.setConfig(SkBitmap::kARGB_8888_Config, 150, 150);
+ bitmap.allocPixels();
+ bitmap.eraseRGB(0, 255, 0);
+ thumbnail_ = gfx::ImageSkia::CreateFrom1xBitmap(bitmap);
+}
+
+int FakeDesktopMediaList::GetSourceCount() const { return sources_.size(); }
+
+const DesktopMediaList::Source& FakeDesktopMediaList::GetSource(
+ int index) const {
+ return sources_[index];
+}
diff --git a/chrome/browser/media/fake_desktop_media_list.h b/chrome/browser/media/fake_desktop_media_list.h
new file mode 100644
index 0000000..67e7ffe
--- /dev/null
+++ b/chrome/browser/media/fake_desktop_media_list.h
@@ -0,0 +1,37 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_MEDIA_FAKE_DESKTOP_MEDIA_LIST_H_
+#define CHROME_BROWSER_MEDIA_FAKE_DESKTOP_MEDIA_LIST_H_
+
+#include <vector>
+
+#include "chrome/browser/media/desktop_media_list.h"
+
+class FakeDesktopMediaList : public DesktopMediaList {
+ public:
+ FakeDesktopMediaList();
+ virtual ~FakeDesktopMediaList();
+
+ void AddSource(int id);
+ void RemoveSource(int index);
+ void SetSourceThumbnail(int index);
+ void SetSourceName(int index, string16 name);
+
+ // DesktopMediaList implementation:
+ virtual void SetUpdatePeriod(base::TimeDelta period) OVERRIDE;
+ virtual void SetThumbnailSize(const gfx::Size& thumbnail_size) OVERRIDE;
+ virtual void SetViewDialogWindowId(
+ content::DesktopMediaID::Id dialog_id) OVERRIDE;
+ virtual void StartUpdating(DesktopMediaListObserver* observer) OVERRIDE;
+ virtual int GetSourceCount() const OVERRIDE;
+ virtual const Source& GetSource(int index) const OVERRIDE;
+
+ private:
+ std::vector<Source> sources_;
+ DesktopMediaListObserver* observer_;
+ gfx::ImageSkia thumbnail_;
+};
+
+#endif // CHROME_BROWSER_MEDIA_FAKE_DESKTOP_MEDIA_LIST_H_
diff --git a/chrome/browser/ui/cocoa/media_picker/desktop_media_picker_controller_unittest.mm b/chrome/browser/ui/cocoa/media_picker/desktop_media_picker_controller_unittest.mm
index 3901f95..17aa9a6 100644
--- a/chrome/browser/ui/cocoa/media_picker/desktop_media_picker_controller_unittest.mm
+++ b/chrome/browser/ui/cocoa/media_picker/desktop_media_picker_controller_unittest.mm
@@ -8,6 +8,7 @@
#include "base/strings/utf_string_conversions.h"
#include "base/run_loop.h"
#include "chrome/browser/media/desktop_media_list_observer.h"
+#include "chrome/browser/media/fake_desktop_media_list.h"
#import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "testing/gtest_mac.h"
@@ -36,71 +37,6 @@
}
@end
-class FakeDesktopMediaList : public DesktopMediaList {
- public:
- FakeDesktopMediaList() : observer_(NULL) {
- }
-
- void AddSource(int id) {
- Source source;
- source.id =
- content::DesktopMediaID(content::DesktopMediaID::TYPE_WINDOW, id);
- source.name = base::Int64ToString16(id);
-
- sources_.push_back(source);
- observer_->OnSourceAdded(sources_.size() - 1);
- }
-
- void RemoveSource(int index) {
- sources_.erase(sources_.begin() + index);
- observer_->OnSourceRemoved(sources_.size() - 1);
- }
-
- void SetSourceThumbnail(int index) {
- sources_[index].thumbnail = thumbnail_;
- observer_->OnSourceThumbnailChanged(index);
- }
-
- void SetSourceName(int index, string16 name) {
- sources_[index].name = name;
- observer_->OnSourceNameChanged(index);
- }
-
- // DesktopMediaList implementation:
- virtual void SetUpdatePeriod(base::TimeDelta period) OVERRIDE {
- }
-
- virtual void SetThumbnailSize(const gfx::Size& thumbnail_size) OVERRIDE {
- }
-
- virtual void SetViewDialogWindowId(
- content::DesktopMediaID::Id dialog_id) OVERRIDE {
- }
-
- virtual void StartUpdating(DesktopMediaListObserver* observer) OVERRIDE {
- observer_ = observer;
-
- SkBitmap bitmap;
- bitmap.setConfig(SkBitmap::kARGB_8888_Config, 150, 150);
- bitmap.allocPixels();
- bitmap.eraseRGB(0, 255, 0);
- thumbnail_ = gfx::ImageSkia::CreateFrom1xBitmap(bitmap);
- }
-
- virtual int GetSourceCount() const OVERRIDE {
- return sources_.size();
- }
-
- virtual const Source& GetSource(int index) const OVERRIDE {
- return sources_[index];
- }
-
- private:
- std::vector<Source> sources_;
- DesktopMediaListObserver* observer_;
- gfx::ImageSkia thumbnail_;
-};
-
class DesktopMediaPickerControllerTest : public CocoaTest {
public:
DesktopMediaPickerControllerTest()
diff --git a/chrome/chrome_tests_unit.gypi b/chrome/chrome_tests_unit.gypi
index 4c48506..6cbd2a7 100644
--- a/chrome/chrome_tests_unit.gypi
+++ b/chrome/chrome_tests_unit.gypi
@@ -139,6 +139,8 @@
'browser/extensions/test_extension_service.h',
'browser/extensions/test_extension_system.cc',
'browser/extensions/test_extension_system.h',
+ 'browser/media/fake_desktop_media_list.cc',
+ 'browser/media/fake_desktop_media_list.h',
'browser/media_galleries/media_galleries_test_util.cc',
'browser/media_galleries/media_galleries_test_util.h',
'browser/net/dns_probe_test_util.cc',