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

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

Issue 9699035: Reduce unnecessary network connections. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: acolwell CR responses. Created 8 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 | Annotate | Revision Log
« no previous file with comments | « webkit/media/buffered_data_source.h ('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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/media_log.h" 8 #include "media/base/media_log.h"
9 #include "net/base/net_errors.h" 9 #include "net/base/net_errors.h"
10 10
(...skipping 24 matching lines...) Expand all
35 read_size_(0), 35 read_size_(0),
36 read_buffer_(NULL), 36 read_buffer_(NULL),
37 intermediate_read_buffer_(new uint8[kInitialReadBufferSize]), 37 intermediate_read_buffer_(new uint8[kInitialReadBufferSize]),
38 intermediate_read_buffer_size_(kInitialReadBufferSize), 38 intermediate_read_buffer_size_(kInitialReadBufferSize),
39 render_loop_(render_loop), 39 render_loop_(render_loop),
40 stop_signal_received_(false), 40 stop_signal_received_(false),
41 stopped_on_render_loop_(false), 41 stopped_on_render_loop_(false),
42 media_is_paused_(true), 42 media_is_paused_(true),
43 media_has_played_(false), 43 media_has_played_(false),
44 preload_(media::AUTO), 44 preload_(media::AUTO),
45 using_range_request_(true),
46 cache_miss_retries_left_(kNumCacheMissRetries), 45 cache_miss_retries_left_(kNumCacheMissRetries),
47 bitrate_(0), 46 bitrate_(0),
48 playback_rate_(0.0), 47 playback_rate_(0.0),
49 media_log_(media_log) { 48 media_log_(media_log) {
50 } 49 }
51 50
52 BufferedDataSource::~BufferedDataSource() {} 51 BufferedDataSource::~BufferedDataSource() {}
53 52
54 // A factory method to create BufferedResourceLoader using the read parameters. 53 // A factory method to create BufferedResourceLoader using the read parameters.
55 // This method can be overrided to inject mock BufferedResourceLoader object 54 // This method can be overrided to inject mock BufferedResourceLoader object
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 // TODO(hclam): Needs more thinking about supporting servers without range 384 // TODO(hclam): Needs more thinking about supporting servers without range
386 // request or their partial response is not complete. 385 // request or their partial response is not complete.
387 total_bytes_ = instance_size; 386 total_bytes_ = instance_size;
388 streaming_ = (instance_size == kPositionNotSpecified) || 387 streaming_ = (instance_size == kPositionNotSpecified) ||
389 !loader_->range_supported(); 388 !loader_->range_supported();
390 } else { 389 } else {
391 // TODO(hclam): In case of failure, we can retry several times. 390 // TODO(hclam): In case of failure, we can retry several times.
392 loader_->Stop(); 391 loader_->Stop();
393 } 392 }
394 393
395 if (error == net::ERR_INVALID_RESPONSE && using_range_request_) {
396 // Assuming that the Range header was causing the problem. Retry without
397 // the Range header.
398 using_range_request_ = false;
399 loader_.reset(CreateResourceLoader(kPositionNotSpecified,
400 kPositionNotSpecified));
401 loader_->Start(
402 base::Bind(&BufferedDataSource::HttpInitialStartCallback, this),
403 base::Bind(&BufferedDataSource::NetworkEventCallback, this),
404 frame_);
405 return;
406 }
407
408 // Reference to prevent destruction while inside the |initialize_cb_| 394 // Reference to prevent destruction while inside the |initialize_cb_|
409 // call. This is a temporary fix to prevent crashes caused by holding the 395 // call. This is a temporary fix to prevent crashes caused by holding the
410 // lock and running the destructor. 396 // lock and running the destructor.
411 // TODO: Review locking in this class and figure out a way to run the callback 397 // TODO: Review locking in this class and figure out a way to run the callback
412 // w/o the lock. 398 // w/o the lock.
413 scoped_refptr<BufferedDataSource> destruction_guard(this); 399 scoped_refptr<BufferedDataSource> destruction_guard(this);
414 { 400 {
415 // We need to prevent calling to filter host and running the callback if 401 // We need to prevent calling to filter host and running the callback if
416 // we have received the stop signal. We need to lock down the whole callback 402 // we have received the stop signal. We need to lock down the whole callback
417 // method to prevent bad things from happening. The reason behind this is 403 // method to prevent bad things from happening. The reason behind this is
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
607 593
608 if (!host()) 594 if (!host())
609 return; 595 return;
610 596
611 if (total_bytes_ != kPositionNotSpecified) 597 if (total_bytes_ != kPositionNotSpecified)
612 host()->SetTotalBytes(total_bytes_); 598 host()->SetTotalBytes(total_bytes_);
613 host()->SetBufferedBytes(buffered_bytes_); 599 host()->SetBufferedBytes(buffered_bytes_);
614 } 600 }
615 601
616 } // namespace webkit_media 602 } // namespace webkit_media
OLDNEW
« no previous file with comments | « webkit/media/buffered_data_source.h ('k') | webkit/media/buffered_data_source_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698