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

Side by Side Diff: webkit/media/buffered_data_source.cc

Issue 8399023: Fire canplaythrough event at the proper time for audio/video (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « media/media.gyp ('k') | webkit/media/buffered_data_source_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "webkit/media/buffered_data_source.h" 5 #include "webkit/media/buffered_data_source.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "media/base/filter_host.h" 8 #include "media/base/filter_host.h"
9 #include "media/base/media_log.h" 9 #include "media/base/media_log.h"
10 #include "net/base/net_errors.h" 10 #include "net/base/net_errors.h"
(...skipping 588 matching lines...) Expand 10 before | Expand all | Expand 10 after
599 if (error > 0) { 599 if (error > 0) {
600 // If a position error code is received, read was successful. So copy 600 // If a position error code is received, read was successful. So copy
601 // from intermediate read buffer to the target read buffer. 601 // from intermediate read buffer to the target read buffer.
602 memcpy(read_buffer_, intermediate_read_buffer_.get(), error); 602 memcpy(read_buffer_, intermediate_read_buffer_.get(), error);
603 } else if (error == 0 && total_bytes_ == kPositionNotSpecified) { 603 } else if (error == 0 && total_bytes_ == kPositionNotSpecified) {
604 // We've reached the end of the file and we didn't know the total size 604 // We've reached the end of the file and we didn't know the total size
605 // before. Update the total size so Read()s past the end of the file will 605 // before. Update the total size so Read()s past the end of the file will
606 // fail like they would if we had known the file size at the beginning. 606 // fail like they would if we had known the file size at the beginning.
607 total_bytes_ = loader_->instance_size(); 607 total_bytes_ = loader_->instance_size();
608 608
609 if (host() && total_bytes_ != kPositionNotSpecified) 609 if (host() && total_bytes_ != kPositionNotSpecified) {
610 host()->SetTotalBytes(total_bytes_); 610 host()->SetTotalBytes(total_bytes_);
611 host()->SetBufferedBytes(total_bytes_);
612 }
611 } 613 }
612 DoneRead_Locked(error); 614 DoneRead_Locked(error);
613 } 615 }
614 616
615 void BufferedDataSource::NetworkEventCallback() { 617 void BufferedDataSource::NetworkEventCallback() {
616 DCHECK(MessageLoop::current() == render_loop_); 618 DCHECK(MessageLoop::current() == render_loop_);
617 DCHECK(loader_.get()); 619 DCHECK(loader_.get());
618 620
619 // In case of non-HTTP request we don't need to report network events, 621 // In case of non-HTTP request we don't need to report network events,
620 // so return immediately. 622 // so return immediately.
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 void BufferedDataSource::UpdateHostState_Locked() { 656 void BufferedDataSource::UpdateHostState_Locked() {
655 // Called from various threads, under lock. 657 // Called from various threads, under lock.
656 lock_.AssertAcquired(); 658 lock_.AssertAcquired();
657 659
658 media::FilterHost* filter_host = host(); 660 media::FilterHost* filter_host = host();
659 if (!filter_host) 661 if (!filter_host)
660 return; 662 return;
661 663
662 filter_host->SetLoaded(loaded_); 664 filter_host->SetLoaded(loaded_);
663 665
664 if (streaming_) { 666 if (streaming_)
665 filter_host->SetStreaming(true); 667 filter_host->SetStreaming(true);
666 } else { 668
669 if (total_bytes_ != kPositionNotSpecified)
667 filter_host->SetTotalBytes(total_bytes_); 670 filter_host->SetTotalBytes(total_bytes_);
668 filter_host->SetBufferedBytes(buffered_bytes_); 671 filter_host->SetBufferedBytes(buffered_bytes_);
669 }
670 } 672 }
671 673
672 } // namespace webkit_media 674 } // namespace webkit_media
OLDNEW
« no previous file with comments | « media/media.gyp ('k') | webkit/media/buffered_data_source_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698