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

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

Issue 1554243002: Add CombinedDesktopMediaList. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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 2013 The Chromium Authors. All rights reserved. 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 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/native_desktop_media_list.h" 5 #include "chrome/browser/media/native_desktop_media_list.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 const std::vector<SourceDescription>& new_sources) { 300 const std::vector<SourceDescription>& new_sources) {
301 typedef std::set<content::DesktopMediaID> SourceSet; 301 typedef std::set<content::DesktopMediaID> SourceSet;
302 SourceSet new_source_set; 302 SourceSet new_source_set;
303 for (size_t i = 0; i < new_sources.size(); ++i) { 303 for (size_t i = 0; i < new_sources.size(); ++i) {
304 new_source_set.insert(new_sources[i].id); 304 new_source_set.insert(new_sources[i].id);
305 } 305 }
306 // Iterate through the old sources to find the removed sources. 306 // Iterate through the old sources to find the removed sources.
307 for (size_t i = 0; i < sources_.size(); ++i) { 307 for (size_t i = 0; i < sources_.size(); ++i) {
308 if (new_source_set.find(sources_[i].id) == new_source_set.end()) { 308 if (new_source_set.find(sources_[i].id) == new_source_set.end()) {
309 sources_.erase(sources_.begin() + i); 309 sources_.erase(sources_.begin() + i);
310 observer_->OnSourceRemoved(i); 310 observer_->OnSourceRemoved(this, i);
311 --i; 311 --i;
312 } 312 }
313 } 313 }
314 // Iterate through the new sources to find the added sources. 314 // Iterate through the new sources to find the added sources.
315 if (new_sources.size() > sources_.size()) { 315 if (new_sources.size() > sources_.size()) {
316 SourceSet old_source_set; 316 SourceSet old_source_set;
317 for (size_t i = 0; i < sources_.size(); ++i) { 317 for (size_t i = 0; i < sources_.size(); ++i) {
318 old_source_set.insert(sources_[i].id); 318 old_source_set.insert(sources_[i].id);
319 } 319 }
320 320
321 for (size_t i = 0; i < new_sources.size(); ++i) { 321 for (size_t i = 0; i < new_sources.size(); ++i) {
322 if (old_source_set.find(new_sources[i].id) == old_source_set.end()) { 322 if (old_source_set.find(new_sources[i].id) == old_source_set.end()) {
323 sources_.insert(sources_.begin() + i, Source()); 323 sources_.insert(sources_.begin() + i, Source());
324 sources_[i].id = new_sources[i].id; 324 sources_[i].id = new_sources[i].id;
325 sources_[i].name = new_sources[i].name; 325 sources_[i].name = new_sources[i].name;
326 observer_->OnSourceAdded(i); 326 observer_->OnSourceAdded(this, i);
327 } 327 }
328 } 328 }
329 } 329 }
330 DCHECK_EQ(new_sources.size(), sources_.size()); 330 DCHECK_EQ(new_sources.size(), sources_.size());
331 331
332 // Find the moved/changed sources. 332 // Find the moved/changed sources.
333 size_t pos = 0; 333 size_t pos = 0;
334 while (pos < sources_.size()) { 334 while (pos < sources_.size()) {
335 if (!(sources_[pos].id == new_sources[pos].id)) { 335 if (!(sources_[pos].id == new_sources[pos].id)) {
336 // Find the source that should be moved to |pos|, starting from |pos + 1| 336 // Find the source that should be moved to |pos|, starting from |pos + 1|
337 // of |sources_|, because entries before |pos| should have been sorted. 337 // of |sources_|, because entries before |pos| should have been sorted.
338 size_t old_pos = pos + 1; 338 size_t old_pos = pos + 1;
339 for (; old_pos < sources_.size(); ++old_pos) { 339 for (; old_pos < sources_.size(); ++old_pos) {
340 if (sources_[old_pos].id == new_sources[pos].id) 340 if (sources_[old_pos].id == new_sources[pos].id)
341 break; 341 break;
342 } 342 }
343 DCHECK(sources_[old_pos].id == new_sources[pos].id); 343 DCHECK(sources_[old_pos].id == new_sources[pos].id);
344 344
345 // Move the source from |old_pos| to |pos|. 345 // Move the source from |old_pos| to |pos|.
346 Source temp = sources_[old_pos]; 346 Source temp = sources_[old_pos];
347 sources_.erase(sources_.begin() + old_pos); 347 sources_.erase(sources_.begin() + old_pos);
348 sources_.insert(sources_.begin() + pos, temp); 348 sources_.insert(sources_.begin() + pos, temp);
349 349
350 observer_->OnSourceMoved(old_pos, pos); 350 observer_->OnSourceMoved(this, old_pos, pos);
351 } 351 }
352 352
353 if (sources_[pos].name != new_sources[pos].name) { 353 if (sources_[pos].name != new_sources[pos].name) {
354 sources_[pos].name = new_sources[pos].name; 354 sources_[pos].name = new_sources[pos].name;
355 observer_->OnSourceNameChanged(pos); 355 observer_->OnSourceNameChanged(this, pos);
356 } 356 }
357 ++pos; 357 ++pos;
358 } 358 }
359 } 359 }
360 360
361 void NativeDesktopMediaList::OnSourceThumbnail( 361 void NativeDesktopMediaList::OnSourceThumbnail(
362 int index, 362 int index,
363 const gfx::ImageSkia& image) { 363 const gfx::ImageSkia& image) {
364 DCHECK_LT(index, static_cast<int>(sources_.size())); 364 DCHECK_LT(index, static_cast<int>(sources_.size()));
365 sources_[index].thumbnail = image; 365 sources_[index].thumbnail = image;
366 observer_->OnSourceThumbnailChanged(index); 366 observer_->OnSourceThumbnailChanged(this, index);
367 } 367 }
368 368
369 void NativeDesktopMediaList::OnRefreshFinished() { 369 void NativeDesktopMediaList::OnRefreshFinished() {
370 BrowserThread::PostDelayedTask( 370 BrowserThread::PostDelayedTask(
371 BrowserThread::UI, FROM_HERE, 371 BrowserThread::UI, FROM_HERE,
372 base::Bind(&NativeDesktopMediaList::Refresh, 372 base::Bind(&NativeDesktopMediaList::Refresh,
373 weak_factory_.GetWeakPtr()), 373 weak_factory_.GetWeakPtr()),
374 update_period_); 374 update_period_);
375 } 375 }
OLDNEW
« no previous file with comments | « chrome/browser/media/desktop_media_list_observer.h ('k') | chrome/browser/ui/views/desktop_media_picker_views.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698