 Chromium Code Reviews
 Chromium Code Reviews Issue 6625059:
  Implementing preload=metadata for video  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src
    
  
    Issue 6625059:
  Implementing preload=metadata for video  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src| OLD | NEW | 
|---|---|
| (Empty) | |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "webkit/glue/media/defer_strategy.h" | |
| 6 | |
| 7 #include "webkit/glue/media/buffered_resource_loader.h" | |
| 8 | |
| 9 namespace webkit_glue { | |
| 10 | |
| 11 bool DeferStrategy::ToggleDefer(BufferedResourceLoader* loader) | |
| 12 { | |
| 13 DCHECK(loader); | |
| 14 bool deferSetting = !loader->deferred_; | |
| 15 loader->deferred_ = deferSetting; | |
| 16 if (loader->url_loader_.get()) { | |
| 17 loader->url_loader_->setDefersLoading(deferSetting); | |
| 18 return true; | |
| 19 } | |
| 20 return false; | |
| 
acolwell GONE FROM CHROMIUM
2011/03/25 04:35:28
Shouldn't this a method in BufferedResourceLoader?
 
vrk (LEFT CHROMIUM)
2011/03/25 21:33:32
lol yeah, oops. Fixed/NA anymore! :)
 | |
| 21 } | |
| 22 | |
| 23 NeverDeferStrategy* NeverDeferStrategy::GetInstance() { | |
| 24 return Singleton<NeverDeferStrategy>::get(); | |
| 25 } | |
| 26 | |
| 27 bool NeverDeferStrategy::EnableDeferIfNeeded( | |
| 28 BufferedResourceLoader* loader) const { | |
| 29 return false; | |
| 30 } | |
| 31 | |
| 32 bool NeverDeferStrategy::DisableDeferIfNeeded( | |
| 33 BufferedResourceLoader* loader) const { | |
| 34 DCHECK(loader); | |
| 35 if (loader->deferred_) | |
| 36 return ToggleDefer(loader); | |
| 37 return false; | |
| 38 } | |
| 39 | |
| 40 ThresholdDeferStrategy* ThresholdDeferStrategy::GetInstance() { | |
| 41 return Singleton<ThresholdDeferStrategy>::get(); | |
| 42 } | |
| 43 | |
| 44 bool ThresholdDeferStrategy::EnableDeferIfNeeded( | |
| 45 BufferedResourceLoader* loader) const { | |
| 46 DCHECK(loader); | |
| 47 if (!loader->deferred_ && | |
| 48 loader->buffer_->forward_bytes() >= loader->buffer_->forward_capacity()) { | |
| 49 return ToggleDefer(loader); | |
| 50 } | |
| 51 return false; | |
| 52 } | |
| 53 | |
| 54 bool ThresholdDeferStrategy::DisableDeferIfNeeded( | |
| 55 BufferedResourceLoader* loader) const { | |
| 56 DCHECK(loader); | |
| 57 DCHECK(loader->buffer_.get()); | |
| 58 size_t amount_buffered = loader->buffer_->forward_bytes(); | |
| 59 size_t half_capacity = loader->buffer_->forward_capacity() / 2; | |
| 60 if (loader->deferred_ && amount_buffered < half_capacity) | |
| 61 return ToggleDefer(loader); | |
| 62 return false; | |
| 63 } | |
| 64 | |
| 65 ReadThenDeferStrategy* ReadThenDeferStrategy::GetInstance() { | |
| 66 return Singleton<ReadThenDeferStrategy>::get(); | |
| 67 } | |
| 68 | |
| 69 bool ReadThenDeferStrategy::EnableDeferIfNeeded( | |
| 70 BufferedResourceLoader* loader) const { | |
| 71 DCHECK(loader); | |
| 72 if (!loader->deferred_ && !loader->read_callback_.get()) | |
| 73 return ToggleDefer(loader); | |
| 74 return false; | |
| 75 } | |
| 76 | |
| 77 bool ReadThenDeferStrategy::DisableDeferIfNeeded( | |
| 78 BufferedResourceLoader* loader) const { | |
| 79 DCHECK(loader); | |
| 80 DCHECK(loader->buffer_.get()); | |
| 81 size_t amount_buffered = loader->buffer_->forward_bytes(); | |
| 82 size_t amount_to_read = static_cast<size_t>(loader->read_size_); | |
| 83 | |
| 84 if (loader->deferred_ && loader->read_callback_.get() && | |
| 85 amount_buffered < amount_to_read) { | |
| 86 return ToggleDefer(loader); | |
| 87 } | |
| 88 return false; | |
| 89 } | |
| 90 | |
| 91 }; | |
| OLD | NEW |