1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "chrome/browser/media/webrtc/fake_desktop_media_list.h"
6 
7 #include <utility>
8 
9 #include "base/strings/string_number_conversions.h"
10 #include "chrome/browser/media/webrtc/desktop_media_list.h"
11 #include "chrome/browser/media/webrtc/desktop_media_list_observer.h"
12 #include "ui/gfx/skia_util.h"
13 
14 using content::DesktopMediaID;
15 
FakeDesktopMediaList(DesktopMediaID::Type type)16 FakeDesktopMediaList::FakeDesktopMediaList(DesktopMediaID::Type type)
17     : observer_(nullptr), type_(type) {}
~FakeDesktopMediaList()18 FakeDesktopMediaList::~FakeDesktopMediaList() {}
19 
AddSource(int id)20 void FakeDesktopMediaList::AddSource(int id) {
21   AddSourceByFullMediaID(
22       content::DesktopMediaID(DesktopMediaID::TYPE_WINDOW, id));
23 }
24 
AddSourceByFullMediaID(content::DesktopMediaID media_id)25 void FakeDesktopMediaList::AddSourceByFullMediaID(
26     content::DesktopMediaID media_id) {
27   Source source;
28   source.id = media_id;
29   source.name = base::NumberToString16(media_id.id);
30 
31   sources_.push_back(source);
32   observer_->OnSourceAdded(this, sources_.size() - 1);
33 }
34 
RemoveSource(int index)35 void FakeDesktopMediaList::RemoveSource(int index) {
36   sources_.erase(sources_.begin() + index);
37   observer_->OnSourceRemoved(this, index);
38 }
39 
MoveSource(int old_index,int new_index)40 void FakeDesktopMediaList::MoveSource(int old_index, int new_index) {
41   Source source = sources_[old_index];
42   sources_.erase(sources_.begin() + old_index);
43   sources_.insert(sources_.begin() + new_index, source);
44   observer_->OnSourceMoved(this, old_index, new_index);
45 }
46 
SetSourceThumbnail(int index)47 void FakeDesktopMediaList::SetSourceThumbnail(int index) {
48   sources_[index].thumbnail = thumbnail_;
49   observer_->OnSourceThumbnailChanged(this, index);
50 }
51 
SetSourceName(int index,base::string16 name)52 void FakeDesktopMediaList::SetSourceName(int index, base::string16 name) {
53   sources_[index].name = name;
54   observer_->OnSourceNameChanged(this, index);
55 }
56 
SetUpdatePeriod(base::TimeDelta period)57 void FakeDesktopMediaList::SetUpdatePeriod(base::TimeDelta period) {}
58 
SetThumbnailSize(const gfx::Size & thumbnail_size)59 void FakeDesktopMediaList::SetThumbnailSize(const gfx::Size& thumbnail_size) {}
60 
SetViewDialogWindowId(content::DesktopMediaID dialog_id)61 void FakeDesktopMediaList::SetViewDialogWindowId(
62     content::DesktopMediaID dialog_id) {}
63 
StartUpdating(DesktopMediaListObserver * observer)64 void FakeDesktopMediaList::StartUpdating(DesktopMediaListObserver* observer) {
65   observer_ = observer;
66 
67   SkBitmap bitmap;
68   bitmap.allocN32Pixels(150, 150);
69   bitmap.eraseARGB(255, 0, 255, 0);
70   thumbnail_ = gfx::ImageSkia::CreateFrom1xBitmap(bitmap);
71 }
72 
Update(UpdateCallback callback)73 void FakeDesktopMediaList::Update(UpdateCallback callback) {
74   std::move(callback).Run();
75 }
76 
GetSourceCount() const77 int FakeDesktopMediaList::GetSourceCount() const {
78   return sources_.size();
79 }
80 
GetSource(int index) const81 const DesktopMediaList::Source& FakeDesktopMediaList::GetSource(
82     int index) const {
83   return sources_[index];
84 }
85 
GetMediaListType() const86 DesktopMediaID::Type FakeDesktopMediaList::GetMediaListType() const {
87   return type_;
88 }
89