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

Side by Side Diff: media/cast/cast_environment.cc

Issue 184813009: Cast Streaming API end-to-end browser_test. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix LoggingImplTest + REBASE Created 6 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 | « media/cast/cast_environment.h ('k') | media/cast/cast_receiver_impl.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "media/cast/cast_environment.h" 5 #include "media/cast/cast_environment.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 10
(...skipping 11 matching lines...) Expand all
22 namespace cast { 22 namespace cast {
23 23
24 CastEnvironment::CastEnvironment( 24 CastEnvironment::CastEnvironment(
25 scoped_ptr<base::TickClock> clock, 25 scoped_ptr<base::TickClock> clock,
26 scoped_refptr<SingleThreadTaskRunner> main_thread_proxy, 26 scoped_refptr<SingleThreadTaskRunner> main_thread_proxy,
27 scoped_refptr<SingleThreadTaskRunner> audio_encode_thread_proxy, 27 scoped_refptr<SingleThreadTaskRunner> audio_encode_thread_proxy,
28 scoped_refptr<SingleThreadTaskRunner> audio_decode_thread_proxy, 28 scoped_refptr<SingleThreadTaskRunner> audio_decode_thread_proxy,
29 scoped_refptr<SingleThreadTaskRunner> video_encode_thread_proxy, 29 scoped_refptr<SingleThreadTaskRunner> video_encode_thread_proxy,
30 scoped_refptr<SingleThreadTaskRunner> video_decode_thread_proxy, 30 scoped_refptr<SingleThreadTaskRunner> video_decode_thread_proxy,
31 scoped_refptr<SingleThreadTaskRunner> transport_thread_proxy, 31 scoped_refptr<SingleThreadTaskRunner> transport_thread_proxy,
32 const CastLoggingConfig& config) 32 const CastLoggingConfig& logging_config)
33 : clock_(clock.Pass()), 33 : main_thread_proxy_(main_thread_proxy),
34 main_thread_proxy_(main_thread_proxy),
35 audio_encode_thread_proxy_(audio_encode_thread_proxy), 34 audio_encode_thread_proxy_(audio_encode_thread_proxy),
36 audio_decode_thread_proxy_(audio_decode_thread_proxy), 35 audio_decode_thread_proxy_(audio_decode_thread_proxy),
37 video_encode_thread_proxy_(video_encode_thread_proxy), 36 video_encode_thread_proxy_(video_encode_thread_proxy),
38 video_decode_thread_proxy_(video_decode_thread_proxy), 37 video_decode_thread_proxy_(video_decode_thread_proxy),
39 transport_thread_proxy_(transport_thread_proxy), 38 transport_thread_proxy_(transport_thread_proxy),
40 logging_(new LoggingImpl(main_thread_proxy, config)) { 39 clock_(clock.Pass()),
41 DCHECK(main_thread_proxy); 40 logging_(new LoggingImpl(logging_config)) {}
42 }
43 41
44 CastEnvironment::~CastEnvironment() { 42 CastEnvironment::~CastEnvironment() {
45 // Logging must be deleted on the main thread. 43 // Logging must be deleted on the main thread.
46 if (main_thread_proxy_->RunsTasksOnCurrentThread()) { 44 if (main_thread_proxy_ && !main_thread_proxy_->RunsTasksOnCurrentThread()) {
47 logging_.reset();
48 } else {
49 main_thread_proxy_->PostTask( 45 main_thread_proxy_->PostTask(
50 FROM_HERE, 46 FROM_HERE,
51 base::Bind(&DeleteLoggingOnMainThread, base::Passed(&logging_))); 47 base::Bind(&DeleteLoggingOnMainThread, base::Passed(&logging_)));
52 } 48 }
53 } 49 }
54 50
55 bool CastEnvironment::PostTask(ThreadId identifier, 51 bool CastEnvironment::PostTask(ThreadId identifier,
56 const tracked_objects::Location& from_here, 52 const tracked_objects::Location& from_here,
57 const base::Closure& task) { 53 const base::Closure& task) {
58 scoped_refptr<SingleThreadTaskRunner> task_runner = 54 return GetTaskRunner(identifier)->PostTask(from_here, task);
59 GetMessageSingleThreadTaskRunnerForThread(identifier);
60
61 return task_runner->PostTask(from_here, task);
62 } 55 }
63 56
64 bool CastEnvironment::PostDelayedTask( 57 bool CastEnvironment::PostDelayedTask(
65 ThreadId identifier, 58 ThreadId identifier,
66 const tracked_objects::Location& from_here, 59 const tracked_objects::Location& from_here,
67 const base::Closure& task, 60 const base::Closure& task,
68 base::TimeDelta delay) { 61 base::TimeDelta delay) {
69 scoped_refptr<SingleThreadTaskRunner> task_runner = 62 return GetTaskRunner(identifier)->PostDelayedTask(from_here, task, delay);
70 GetMessageSingleThreadTaskRunnerForThread(identifier);
71
72 return task_runner->PostDelayedTask(from_here, task, delay);
73 } 63 }
74 64
75 scoped_refptr<SingleThreadTaskRunner> 65 scoped_refptr<SingleThreadTaskRunner> CastEnvironment::GetTaskRunner(
76 CastEnvironment::GetMessageSingleThreadTaskRunnerForThread( 66 ThreadId identifier) const {
77 ThreadId identifier) {
78 switch (identifier) { 67 switch (identifier) {
79 case CastEnvironment::MAIN: 68 case CastEnvironment::MAIN:
80 return main_thread_proxy_; 69 return main_thread_proxy_;
81 case CastEnvironment::AUDIO_ENCODER: 70 case CastEnvironment::AUDIO_ENCODER:
82 return audio_encode_thread_proxy_; 71 return audio_encode_thread_proxy_;
83 case CastEnvironment::AUDIO_DECODER: 72 case CastEnvironment::AUDIO_DECODER:
84 return audio_decode_thread_proxy_; 73 return audio_decode_thread_proxy_;
85 case CastEnvironment::VIDEO_ENCODER: 74 case CastEnvironment::VIDEO_ENCODER:
86 return video_encode_thread_proxy_; 75 return video_encode_thread_proxy_;
87 case CastEnvironment::VIDEO_DECODER: 76 case CastEnvironment::VIDEO_DECODER:
88 return video_decode_thread_proxy_; 77 return video_decode_thread_proxy_;
89 case CastEnvironment::TRANSPORT: 78 case CastEnvironment::TRANSPORT:
90 return transport_thread_proxy_; 79 return transport_thread_proxy_;
91 default: 80 default:
92 NOTREACHED() << "Invalid Thread identifier"; 81 NOTREACHED() << "Invalid Thread identifier";
93 return NULL; 82 return NULL;
94 } 83 }
95 } 84 }
96 85
97 bool CastEnvironment::CurrentlyOn(ThreadId identifier) { 86 bool CastEnvironment::CurrentlyOn(ThreadId identifier) {
98 switch (identifier) { 87 switch (identifier) {
99 case CastEnvironment::MAIN: 88 case CastEnvironment::MAIN:
100 return main_thread_proxy_->RunsTasksOnCurrentThread(); 89 return main_thread_proxy_ &&
90 main_thread_proxy_->RunsTasksOnCurrentThread();
101 case CastEnvironment::AUDIO_ENCODER: 91 case CastEnvironment::AUDIO_ENCODER:
102 return audio_encode_thread_proxy_->RunsTasksOnCurrentThread(); 92 return audio_encode_thread_proxy_ &&
93 audio_encode_thread_proxy_->RunsTasksOnCurrentThread();
103 case CastEnvironment::AUDIO_DECODER: 94 case CastEnvironment::AUDIO_DECODER:
104 return audio_decode_thread_proxy_->RunsTasksOnCurrentThread(); 95 return audio_decode_thread_proxy_ &&
96 audio_decode_thread_proxy_->RunsTasksOnCurrentThread();
105 case CastEnvironment::VIDEO_ENCODER: 97 case CastEnvironment::VIDEO_ENCODER:
106 return video_encode_thread_proxy_->RunsTasksOnCurrentThread(); 98 return video_encode_thread_proxy_ &&
99 video_encode_thread_proxy_->RunsTasksOnCurrentThread();
107 case CastEnvironment::VIDEO_DECODER: 100 case CastEnvironment::VIDEO_DECODER:
108 return video_decode_thread_proxy_->RunsTasksOnCurrentThread(); 101 return video_decode_thread_proxy_ &&
102 video_decode_thread_proxy_->RunsTasksOnCurrentThread();
109 case CastEnvironment::TRANSPORT: 103 case CastEnvironment::TRANSPORT:
110 return transport_thread_proxy_->RunsTasksOnCurrentThread(); 104 return transport_thread_proxy_ &&
105 transport_thread_proxy_->RunsTasksOnCurrentThread();
111 default: 106 default:
112 NOTREACHED() << "Invalid thread identifier"; 107 NOTREACHED() << "Invalid thread identifier";
113 return false; 108 return false;
114 } 109 }
115 } 110 }
116 111
117 base::TickClock* CastEnvironment::Clock() const { return clock_.get(); }
118
119 LoggingImpl* CastEnvironment::Logging() {
120 DCHECK(CurrentlyOn(CastEnvironment::MAIN))
121 << "Must be called from main thread";
122 return logging_.get();
123 }
124
125 } // namespace cast 112 } // namespace cast
126 } // namespace media 113 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/cast_environment.h ('k') | media/cast/cast_receiver_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698