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

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 11
12 using content::BrowserThread; 12 using content::BrowserThread;
13 13
14 DesktopMediaListBase::DesktopMediaListBase(base::TimeDelta update_period) 14 DesktopMediaListBase::DesktopMediaListBase(base::TimeDelta update_period)
15 : update_period_(update_period), weak_factory_(this) {} 15 : update_period_(update_period), weak_factory_(this) {}
16 16
17 DesktopMediaListBase::~DesktopMediaListBase() {} 17 DesktopMediaListBase::~DesktopMediaListBase() {}
18 18
19 void DesktopMediaListBase::SetUpdatePeriod(base::TimeDelta period) { 19 void DesktopMediaListBase::SetUpdatePeriod(base::TimeDelta period) {
20 DCHECK(!observer_); 20 DCHECK(!observer_);
21 update_period_ = period; 21 update_period_ = period;
22 } 22 }
23 23
24 void DesktopMediaListBase::SetThumbnailSize(const gfx::Size& thumbnail_size) { 24 void DesktopMediaListBase::SetThumbnailSize(const gfx::Size& thumbnail_size) {
25 thumbnail_size_ = thumbnail_size; 25 thumbnail_size_ = thumbnail_size;
26 } 26 }
27 27
28 void DesktopMediaListBase::SetViewDialogWindowId( 28 void DesktopMediaListBase::SetViewDialogWindowId(DesktopMediaID dialog_id) {
29 content::DesktopMediaID dialog_id) {
30 view_dialog_id_ = dialog_id; 29 view_dialog_id_ = dialog_id;
31 } 30 }
32 31
33 void DesktopMediaListBase::StartUpdating(DesktopMediaListObserver* observer) { 32 void DesktopMediaListBase::StartUpdating(DesktopMediaListObserver* observer) {
34 DCHECK(!observer_); 33 DCHECK(!observer_);
35 34
36 observer_ = observer; 35 observer_ = observer;
37 Refresh(); 36 Refresh();
38 } 37 }
39 38
40 int DesktopMediaListBase::GetSourceCount() const { 39 int DesktopMediaListBase::GetSourceCount() const {
41 return sources_.size(); 40 return sources_.size();
42 } 41 }
43 42
44 const DesktopMediaList::Source& DesktopMediaListBase::GetSource( 43 const DesktopMediaList::Source& DesktopMediaListBase::GetSource(
45 int index) const { 44 int index) const {
46 DCHECK_GE(index, 0); 45 DCHECK_GE(index, 0);
47 DCHECK_LT(index, static_cast<int>(sources_.size())); 46 DCHECK_LT(index, static_cast<int>(sources_.size()));
48 return sources_[index]; 47 return sources_[index];
49 } 48 }
50 49
51 DesktopMediaListBase::SourceDescription::SourceDescription( 50 DesktopMediaListBase::SourceDescription::SourceDescription(
52 content::DesktopMediaID id, 51 DesktopMediaID id,
53 const base::string16& name) 52 const base::string16& name)
54 : id(id), name(name) {} 53 : id(id), name(name) {}
55 54
56 void DesktopMediaListBase::UpdateSourcesList( 55 void DesktopMediaListBase::UpdateSourcesList(
57 const std::vector<SourceDescription>& new_sources) { 56 const std::vector<SourceDescription>& new_sources) {
58 typedef std::set<content::DesktopMediaID> SourceSet; 57 typedef std::set<DesktopMediaID> SourceSet;
59 SourceSet new_source_set; 58 SourceSet new_source_set;
60 for (size_t i = 0; i < new_sources.size(); ++i) { 59 for (size_t i = 0; i < new_sources.size(); ++i) {
61 new_source_set.insert(new_sources[i].id); 60 new_source_set.insert(new_sources[i].id);
62 } 61 }
63 // Iterate through the old sources to find the removed sources. 62 // Iterate through the old sources to find the removed sources.
64 for (size_t i = 0; i < sources_.size(); ++i) { 63 for (size_t i = 0; i < sources_.size(); ++i) {
65 if (new_source_set.find(sources_[i].id) == new_source_set.end()) { 64 if (new_source_set.find(sources_[i].id) == new_source_set.end()) {
66 sources_.erase(sources_.begin() + i); 65 sources_.erase(sources_.begin() + i);
67 observer_->OnSourceRemoved(this, i); 66 observer_->OnSourceRemoved(this, i);
68 --i; 67 --i;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 } 107 }
109 108
110 if (sources_[pos].name != new_sources[pos].name) { 109 if (sources_[pos].name != new_sources[pos].name) {
111 sources_[pos].name = new_sources[pos].name; 110 sources_[pos].name = new_sources[pos].name;
112 observer_->OnSourceNameChanged(this, pos); 111 observer_->OnSourceNameChanged(this, pos);
113 } 112 }
114 ++pos; 113 ++pos;
115 } 114 }
116 } 115 }
117 116
118 void DesktopMediaListBase::UpdateSourceThumbnail(content::DesktopMediaID id, 117 void DesktopMediaListBase::UpdateSourceThumbnail(DesktopMediaID id,
119 const gfx::ImageSkia& image) { 118 const gfx::ImageSkia& image) {
120 for (size_t i = 0; i < sources_.size(); ++i) { 119 for (size_t i = 0; i < sources_.size(); ++i) {
121 if (sources_[i].id == id) { 120 if (sources_[i].id == id) {
122 sources_[i].thumbnail = image; 121 sources_[i].thumbnail = image;
123 observer_->OnSourceThumbnailChanged(this, i); 122 observer_->OnSourceThumbnailChanged(this, i);
124 break; 123 break;
125 } 124 }
126 } 125 }
127 } 126 }
128 127
129 void DesktopMediaListBase::ScheduleNextRefresh() { 128 void DesktopMediaListBase::ScheduleNextRefresh() {
130 BrowserThread::PostDelayedTask( 129 BrowserThread::PostDelayedTask(
131 BrowserThread::UI, FROM_HERE, 130 BrowserThread::UI, FROM_HERE,
132 base::Bind(&DesktopMediaListBase::Refresh, weak_factory_.GetWeakPtr()), 131 base::Bind(&DesktopMediaListBase::Refresh, weak_factory_.GetWeakPtr()),
133 update_period_); 132 update_period_);
134 } 133 }
134
135 // Static
136 uint32_t DesktopMediaListBase::GetImageHash(const gfx::Image& image) {
137 SkBitmap bitmap = image.AsBitmap();
138 bitmap.lockPixels();
139 uint32_t value =
140 base::Hash(reinterpret_cast<char*>(bitmap.getPixels()), bitmap.getSize());
141 bitmap.unlockPixels();
142
143 return value;
144 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698