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

Side by Side Diff: webkit/glue/media/defer_strategy.cc

Issue 6625059: Implementing preload=metadata for video (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleanup defer strategy, fix logic bug Created 9 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
OLDNEW
(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 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698