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

Side by Side Diff: chrome/browser/media/desktop_media_list_base.cc

Issue 1763753003: Capture chrome browser windows from internal rendering procedure for windows and linux (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/media/desktop_media_list_base.h" 5 #include "chrome/browser/media/desktop_media_list_base.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "chrome/browser/media/desktop_media_list_observer.h" 9 #include "chrome/browser/media/desktop_media_list_observer.h"
10 #include "content/public/browser/browser_thread.h" 10 #include "content/public/browser/browser_thread.h"
11 #include "ui/gfx/image/image.h"
11 12
12 using content::BrowserThread; 13 using content::BrowserThread;
14 using content::DesktopMediaID;
13 15
14 DesktopMediaListBase::DesktopMediaListBase(base::TimeDelta update_period) 16 DesktopMediaListBase::DesktopMediaListBase(base::TimeDelta update_period)
15 : update_period_(update_period), weak_factory_(this) {} 17 : update_period_(update_period), weak_factory_(this) {}
16 18
17 DesktopMediaListBase::~DesktopMediaListBase() {} 19 DesktopMediaListBase::~DesktopMediaListBase() {}
18 20
19 void DesktopMediaListBase::SetUpdatePeriod(base::TimeDelta period) { 21 void DesktopMediaListBase::SetUpdatePeriod(base::TimeDelta period) {
20 DCHECK(!observer_); 22 DCHECK(!observer_);
21 update_period_ = period; 23 update_period_ = period;
22 } 24 }
23 25
24 void DesktopMediaListBase::SetThumbnailSize(const gfx::Size& thumbnail_size) { 26 void DesktopMediaListBase::SetThumbnailSize(const gfx::Size& thumbnail_size) {
25 thumbnail_size_ = thumbnail_size; 27 thumbnail_size_ = thumbnail_size;
26 } 28 }
27 29
28 void DesktopMediaListBase::SetViewDialogWindowId( 30 void DesktopMediaListBase::SetViewDialogWindowId(DesktopMediaID dialog_id) {
29 content::DesktopMediaID dialog_id) {
30 view_dialog_id_ = dialog_id; 31 view_dialog_id_ = dialog_id;
31 } 32 }
32 33
33 void DesktopMediaListBase::StartUpdating(DesktopMediaListObserver* observer) { 34 void DesktopMediaListBase::StartUpdating(DesktopMediaListObserver* observer) {
34 DCHECK(!observer_); 35 DCHECK(!observer_);
35 36
36 observer_ = observer; 37 observer_ = observer;
37 Refresh(); 38 Refresh();
38 } 39 }
39 40
40 int DesktopMediaListBase::GetSourceCount() const { 41 int DesktopMediaListBase::GetSourceCount() const {
41 return sources_.size(); 42 return sources_.size();
42 } 43 }
43 44
44 const DesktopMediaList::Source& DesktopMediaListBase::GetSource( 45 const DesktopMediaList::Source& DesktopMediaListBase::GetSource(
45 int index) const { 46 int index) const {
46 DCHECK_GE(index, 0); 47 DCHECK_GE(index, 0);
47 DCHECK_LT(index, static_cast<int>(sources_.size())); 48 DCHECK_LT(index, static_cast<int>(sources_.size()));
48 return sources_[index]; 49 return sources_[index];
49 } 50 }
50 51
51 DesktopMediaListBase::SourceDescription::SourceDescription( 52 DesktopMediaListBase::SourceDescription::SourceDescription(
52 content::DesktopMediaID id, 53 DesktopMediaID id,
53 const base::string16& name) 54 const base::string16& name)
54 : id(id), name(name) {} 55 : id(id), name(name) {}
55 56
56 void DesktopMediaListBase::UpdateSourcesList( 57 void DesktopMediaListBase::UpdateSourcesList(
57 const std::vector<SourceDescription>& new_sources) { 58 const std::vector<SourceDescription>& new_sources) {
58 typedef std::set<content::DesktopMediaID> SourceSet; 59 typedef std::set<DesktopMediaID> SourceSet;
59 SourceSet new_source_set; 60 SourceSet new_source_set;
60 for (size_t i = 0; i < new_sources.size(); ++i) { 61 for (size_t i = 0; i < new_sources.size(); ++i) {
61 new_source_set.insert(new_sources[i].id); 62 new_source_set.insert(new_sources[i].id);
62 } 63 }
63 // Iterate through the old sources to find the removed sources. 64 // Iterate through the old sources to find the removed sources.
64 for (size_t i = 0; i < sources_.size(); ++i) { 65 for (size_t i = 0; i < sources_.size(); ++i) {
65 if (new_source_set.find(sources_[i].id) == new_source_set.end()) { 66 if (new_source_set.find(sources_[i].id) == new_source_set.end()) {
66 sources_.erase(sources_.begin() + i); 67 sources_.erase(sources_.begin() + i);
67 observer_->OnSourceRemoved(this, i); 68 observer_->OnSourceRemoved(this, i);
68 --i; 69 --i;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 } 109 }
109 110
110 if (sources_[pos].name != new_sources[pos].name) { 111 if (sources_[pos].name != new_sources[pos].name) {
111 sources_[pos].name = new_sources[pos].name; 112 sources_[pos].name = new_sources[pos].name;
112 observer_->OnSourceNameChanged(this, pos); 113 observer_->OnSourceNameChanged(this, pos);
113 } 114 }
114 ++pos; 115 ++pos;
115 } 116 }
116 } 117 }
117 118
118 void DesktopMediaListBase::UpdateSourceThumbnail(content::DesktopMediaID id, 119 void DesktopMediaListBase::UpdateSourceThumbnail(DesktopMediaID id,
119 const gfx::ImageSkia& image) { 120 const gfx::ImageSkia& image) {
120 for (size_t i = 0; i < sources_.size(); ++i) { 121 for (size_t i = 0; i < sources_.size(); ++i) {
121 if (sources_[i].id == id) { 122 if (sources_[i].id == id) {
122 sources_[i].thumbnail = image; 123 sources_[i].thumbnail = image;
123 observer_->OnSourceThumbnailChanged(this, i); 124 observer_->OnSourceThumbnailChanged(this, i);
124 break; 125 break;
125 } 126 }
126 } 127 }
127 } 128 }
128 129
129 void DesktopMediaListBase::ScheduleNextRefresh() { 130 void DesktopMediaListBase::ScheduleNextRefresh() {
130 BrowserThread::PostDelayedTask( 131 BrowserThread::PostDelayedTask(
131 BrowserThread::UI, FROM_HERE, 132 BrowserThread::UI, FROM_HERE,
132 base::Bind(&DesktopMediaListBase::Refresh, weak_factory_.GetWeakPtr()), 133 base::Bind(&DesktopMediaListBase::Refresh, weak_factory_.GetWeakPtr()),
133 update_period_); 134 update_period_);
134 } 135 }
136
137 // static
138 uint32_t DesktopMediaListBase::GetImageHash(const gfx::Image& image) {
139 SkBitmap bitmap = image.AsBitmap();
140 bitmap.lockPixels();
141 uint32_t value =
142 base::Hash(reinterpret_cast<char*>(bitmap.getPixels()), bitmap.getSize());
143 bitmap.unlockPixels();
144
145 return value;
146 }
OLDNEW
« no previous file with comments | « chrome/browser/media/desktop_media_list_base.h ('k') | chrome/browser/media/native_desktop_media_list.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698