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 |