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

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

Issue 2770403002: [Extensions Bindings] Remove ScriptContext::DispatchEvent (Closed)
Patch Set: Created 3 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
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"
11 #include "extensions/renderer/extension_bindings_system.h"
11 #include "extensions/renderer/script_context.h" 12 #include "extensions/renderer/script_context.h"
12 #include "third_party/WebKit/public/platform/WebMediaStream.h" 13 #include "third_party/WebKit/public/platform/WebMediaStream.h"
13 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" 14 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"
14 #include "third_party/WebKit/public/web/WebDOMMediaStreamTrack.h" 15 #include "third_party/WebKit/public/web/WebDOMMediaStreamTrack.h"
15 #include "v8/include/v8.h" 16 #include "v8/include/v8.h"
16 17
17 namespace extensions { 18 namespace extensions {
18 19
19 using content::V8ValueConverter; 20 using content::V8ValueConverter;
20 21
21 namespace { 22 namespace {
22 const char kErrorNotSupported[] = "Not supported"; 23 const char kErrorNotSupported[] = "Not supported";
23 const char kInvalidStreamArgs[] = "Invalid stream arguments"; 24 const char kInvalidStreamArgs[] = "Invalid stream arguments";
24 const char kSessionAlreadyStarted[] = "The session has been already started"; 25 const char kSessionAlreadyStarted[] = "The session has been already started";
25 const char kSessionAlreadyTerminating[] = "The session is already terminating"; 26 const char kSessionAlreadyTerminating[] = "The session is already terminating";
26 const char kSessionNotFound[] = "Session not found"; 27 const char kSessionNotFound[] = "Session not found";
27 } // namespace 28 } // namespace
28 29
29 DisplaySourceCustomBindings::DisplaySourceCustomBindings(ScriptContext* context) 30 DisplaySourceCustomBindings::DisplaySourceCustomBindings(
31 ScriptContext* context,
32 ExtensionBindingsSystem* bindings_system)
30 : ObjectBackedNativeHandler(context), 33 : ObjectBackedNativeHandler(context),
34 bindings_system_(bindings_system),
31 weak_factory_(this) { 35 weak_factory_(this) {
32 RouteFunction("StartSession", "displaySource", 36 RouteFunction("StartSession", "displaySource",
33 base::Bind(&DisplaySourceCustomBindings::StartSession, 37 base::Bind(&DisplaySourceCustomBindings::StartSession,
34 weak_factory_.GetWeakPtr())); 38 weak_factory_.GetWeakPtr()));
35 RouteFunction("TerminateSession", "displaySource", 39 RouteFunction("TerminateSession", "displaySource",
36 base::Bind(&DisplaySourceCustomBindings::TerminateSession, 40 base::Bind(&DisplaySourceCustomBindings::TerminateSession,
37 weak_factory_.GetWeakPtr())); 41 weak_factory_.GetWeakPtr()));
38 } 42 }
39 43
40 DisplaySourceCustomBindings::~DisplaySourceCustomBindings() { 44 DisplaySourceCustomBindings::~DisplaySourceCustomBindings() {
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 const std::string& error_message) { 247 const std::string& error_message) {
244 CHECK(GetDisplaySession(sink_id)); 248 CHECK(GetDisplaySession(sink_id));
245 if (!success) { 249 if (!success) {
246 // Session has failed to start, removing it. 250 // Session has failed to start, removing it.
247 session_map_.erase(sink_id); 251 session_map_.erase(sink_id);
248 } 252 }
249 OnCallCompleted(call_id, success, error_message); 253 OnCallCompleted(call_id, success, error_message);
250 } 254 }
251 255
252 void DisplaySourceCustomBindings::DispatchSessionTerminated(int sink_id) const { 256 void DisplaySourceCustomBindings::DispatchSessionTerminated(int sink_id) const {
253 v8::Isolate* isolate = context()->isolate(); 257 base::ListValue event_args;
254 v8::HandleScope handle_scope(isolate); 258 event_args.AppendInteger(sink_id);
255 v8::Context::Scope context_scope(context()->v8_context()); 259 bindings_system_->DispatchEventInContext("displaySource.onSessionTerminated",
256 v8::Local<v8::Array> event_args = v8::Array::New(isolate, 1); 260 &event_args, nullptr, context());
257 event_args->Set(0, v8::Integer::New(isolate, sink_id));
258 context()->DispatchEvent("displaySource.onSessionTerminated", event_args);
259 } 261 }
260 262
261 void DisplaySourceCustomBindings::DispatchSessionError( 263 void DisplaySourceCustomBindings::DispatchSessionError(
262 int sink_id, 264 int sink_id,
263 DisplaySourceErrorType type, 265 DisplaySourceErrorType type,
264 const std::string& message) const { 266 const std::string& message) const {
265 v8::Isolate* isolate = context()->isolate();
266 v8::HandleScope handle_scope(isolate);
267 v8::Context::Scope context_scope(context()->v8_context());
268
269 api::display_source::ErrorInfo error_info; 267 api::display_source::ErrorInfo error_info;
270 error_info.type = type; 268 error_info.type = type;
271 if (!message.empty()) 269 if (!message.empty())
272 error_info.description.reset(new std::string(message)); 270 error_info.description.reset(new std::string(message));
273 271
274 std::unique_ptr<V8ValueConverter> converter(V8ValueConverter::create()); 272 base::ListValue event_args;
275 v8::Local<v8::Value> info_arg = 273 event_args.AppendInteger(sink_id);
276 converter->ToV8Value(error_info.ToValue().get(), 274 event_args.Append(error_info.ToValue());
277 context()->v8_context()); 275 bindings_system_->DispatchEventInContext(
278 276 "displaySource.onSessionErrorOccured", &event_args, nullptr, context());
279 v8::Local<v8::Array> event_args = v8::Array::New(isolate, 2);
280 event_args->Set(0, v8::Integer::New(isolate, sink_id));
281 event_args->Set(1, info_arg);
282 context()->DispatchEvent("displaySource.onSessionErrorOccured", event_args);
283 } 277 }
284 278
285 DisplaySourceSession* DisplaySourceCustomBindings::GetDisplaySession( 279 DisplaySourceSession* DisplaySourceCustomBindings::GetDisplaySession(
286 int sink_id) const { 280 int sink_id) const {
287 auto iter = session_map_.find(sink_id); 281 auto iter = session_map_.find(sink_id);
288 if (iter != session_map_.end()) 282 if (iter != session_map_.end())
289 return iter->second.get(); 283 return iter->second.get();
290 return nullptr; 284 return nullptr;
291 } 285 }
292 286
293 void DisplaySourceCustomBindings::OnSessionTerminated(int sink_id) { 287 void DisplaySourceCustomBindings::OnSessionTerminated(int sink_id) {
294 CHECK(GetDisplaySession(sink_id)); 288 CHECK(GetDisplaySession(sink_id));
295 session_map_.erase(sink_id); 289 session_map_.erase(sink_id);
296 DispatchSessionTerminated(sink_id); 290 DispatchSessionTerminated(sink_id);
297 } 291 }
298 292
299 void DisplaySourceCustomBindings::OnSessionError(int sink_id, 293 void DisplaySourceCustomBindings::OnSessionError(int sink_id,
300 DisplaySourceErrorType type, 294 DisplaySourceErrorType type,
301 const std::string& message) { 295 const std::string& message) {
302 CHECK(GetDisplaySession(sink_id)); 296 CHECK(GetDisplaySession(sink_id));
303 DispatchSessionError(sink_id, type, message); 297 DispatchSessionError(sink_id, type, message);
304 } 298 }
305 299
306 } // extensions 300 } // extensions
OLDNEW
« no previous file with comments | « extensions/renderer/display_source_custom_bindings.h ('k') | extensions/renderer/js_extension_bindings_system.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698