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

Side by Side Diff: extensions/renderer/display_source_custom_bindings.cc

Issue 1540563002: [chrome.displaySource] Add WiFi Display session class skeleton and mojo service (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review comments Created 4 years, 11 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
« no previous file with comments | « extensions/renderer/api/display_source/wifi_display/wifi_display_session.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "extensions/renderer/display_source_custom_bindings.h" 5 #include "extensions/renderer/display_source_custom_bindings.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "content/public/child/v8_value_converter.h" 10 #include "content/public/child/v8_value_converter.h"
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 GetChildValue(start_info, "authenticationInfo", isolate); 128 GetChildValue(start_info, "authenticationInfo", isolate);
129 if (!auth_info_v8_val->IsNull()) { 129 if (!auth_info_v8_val->IsNull()) {
130 CHECK(auth_info_v8_val->IsObject()); 130 CHECK(auth_info_v8_val->IsObject());
131 scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create()); 131 scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create());
132 scoped_ptr<base::Value> auth_info_val( 132 scoped_ptr<base::Value> auth_info_val(
133 converter->FromV8Value(auth_info_v8_val, context()->v8_context())); 133 converter->FromV8Value(auth_info_v8_val, context()->v8_context()));
134 CHECK(auth_info_val); 134 CHECK(auth_info_val);
135 auth_info = DisplaySourceAuthInfo::FromValue(*auth_info_val); 135 auth_info = DisplaySourceAuthInfo::FromValue(*auth_info_val);
136 } 136 }
137 137
138 DisplaySourceSessionParams session_params;
139 session_params.sink_id = sink_id;
140 session_params.video_track = video_track;
141 session_params.audio_track = audio_track;
142 session_params.render_frame = context()->GetRenderFrame();
143 if (auth_info) {
144 session_params.auth_method = auth_info->method;
145 session_params.auth_data = auth_info->data ? *auth_info->data : "";
146 }
138 scoped_ptr<DisplaySourceSession> session = 147 scoped_ptr<DisplaySourceSession> session =
139 DisplaySourceSessionFactory::CreateSession( 148 DisplaySourceSessionFactory::CreateSession(session_params);
140 sink_id, video_track, audio_track, std::move(auth_info));
141 if (!session) { 149 if (!session) {
142 isolate->ThrowException(v8::Exception::Error(v8::String::NewFromUtf8( 150 isolate->ThrowException(v8::Exception::Error(v8::String::NewFromUtf8(
143 isolate, kErrorNotSupported))); 151 isolate, kErrorNotSupported)));
144 return; 152 return;
145 } 153 }
146 154
147 auto on_started_callback = base::Bind( 155 auto on_started_callback = base::Bind(
148 &DisplaySourceCustomBindings::OnSessionStarted, 156 &DisplaySourceCustomBindings::OnSessionStarted,
149 weak_factory_.GetWeakPtr()); 157 weak_factory_.GetWeakPtr());
150 auto on_terminated_callback = base::Bind( 158 auto on_terminated_callback = base::Bind(
151 &DisplaySourceCustomBindings::OnSessionTerminated, 159 &DisplaySourceCustomBindings::OnSessionTerminated,
152 weak_factory_.GetWeakPtr()); 160 weak_factory_.GetWeakPtr());
153 auto on_error_callback = base::Bind( 161 auto on_error_callback = base::Bind(
154 &DisplaySourceCustomBindings::OnSessionError, 162 &DisplaySourceCustomBindings::OnSessionError,
155 weak_factory_.GetWeakPtr()); 163 weak_factory_.GetWeakPtr());
156 session->SetCallbacks(on_started_callback, 164 session->SetCallbacks(on_started_callback,
157 on_terminated_callback, 165 on_terminated_callback,
158 on_error_callback); 166 on_error_callback);
167 session->Start();
159 session_map_.insert(std::make_pair(sink_id, std::move(session))); 168 session_map_.insert(std::make_pair(sink_id, std::move(session)));
160 session->Start();
161 } 169 }
162 170
163 void DisplaySourceCustomBindings::TerminateSession( 171 void DisplaySourceCustomBindings::TerminateSession(
164 const v8::FunctionCallbackInfo<v8::Value>& args) { 172 const v8::FunctionCallbackInfo<v8::Value>& args) {
165 CHECK_EQ(1, args.Length()); 173 CHECK_EQ(1, args.Length());
166 CHECK(args[0]->IsInt32()); 174 CHECK(args[0]->IsInt32());
167 175
168 v8::Isolate* isolate = context()->isolate(); 176 v8::Isolate* isolate = context()->isolate();
169 int sink_id = args[0]->ToInt32(args.GetIsolate())->Value(); 177 int sink_id = args[0]->ToInt32(args.GetIsolate())->Value();
170 DisplaySourceSession* session = GetDisplaySession(sink_id); 178 DisplaySourceSession* session = GetDisplaySession(sink_id);
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 CHECK(session); 250 CHECK(session);
243 session_map_.erase(sink_id); 251 session_map_.erase(sink_id);
244 DispatchSessionTerminated(sink_id); 252 DispatchSessionTerminated(sink_id);
245 } 253 }
246 254
247 void DisplaySourceCustomBindings::OnSessionError(int sink_id, 255 void DisplaySourceCustomBindings::OnSessionError(int sink_id,
248 DisplaySourceErrorType type, 256 DisplaySourceErrorType type,
249 const std::string& message) { 257 const std::string& message) {
250 DisplaySourceSession* session = GetDisplaySession(sink_id); 258 DisplaySourceSession* session = GetDisplaySession(sink_id);
251 CHECK(session); 259 CHECK(session);
252 if (session->state() == DisplaySourceSession::Establishing) { 260 if (session->state() != DisplaySourceSession::Established &&
253 // Error has occured before the session has actually started. 261 session->state() != DisplaySourceSession::Terminating) {
262 // Error has occured before the session has actually started,
263 // no need to wait for session termination notification.
254 session_map_.erase(sink_id); 264 session_map_.erase(sink_id);
255 } 265 }
256 266
257 DispatchSessionError(sink_id, type, message); 267 DispatchSessionError(sink_id, type, message);
258 } 268 }
259 269
260 } // extensions 270 } // extensions
OLDNEW
« no previous file with comments | « extensions/renderer/api/display_source/wifi_display/wifi_display_session.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698