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

Side by Side Diff: content/renderer/pepper/message_channel.cc

Issue 1367333002: Remove WebDocument::createEvent. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/renderer/pepper/message_channel.h" 5 #include "content/renderer/pepper/message_channel.h"
6 6
7 #include <cstdlib> 7 #include <cstdlib>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 void MessageChannel::PostMessageToJavaScriptImpl( 357 void MessageChannel::PostMessageToJavaScriptImpl(
358 const WebSerializedScriptValue& message_data) { 358 const WebSerializedScriptValue& message_data) {
359 DCHECK(instance_); 359 DCHECK(instance_);
360 360
361 WebPluginContainer* container = instance_->container(); 361 WebPluginContainer* container = instance_->container();
362 // It's possible that container() is NULL if the plugin has been removed from 362 // It's possible that container() is NULL if the plugin has been removed from
363 // the DOM (but the PluginInstance is not destroyed yet). 363 // the DOM (but the PluginInstance is not destroyed yet).
364 if (!container) 364 if (!container)
365 return; 365 return;
366 366
367 WebDOMEvent event =
368 container->element().document().createEvent("MessageEvent");
369 WebDOMMessageEvent msg_event = event.to<WebDOMMessageEvent>();
370 msg_event.initMessageEvent("message", // type
371 false, // canBubble
372 false, // cancelable
373 message_data, // data
374 "", // origin [*]
375 NULL, // source [*]
376 container->element().document(), // target document
377 ""); // lastEventId
378 // [*] Note that the |origin| is only specified for cross-document and server- 367 // [*] Note that the |origin| is only specified for cross-document and server-
379 // sent messages, while |source| is only specified for cross-document 368 // sent messages, while |source| is only specified for cross-document
380 // messages: 369 // messages:
381 // http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html 370 // http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html
382 // This currently behaves like Web Workers. On Firefox, Chrome, and Safari 371 // This currently behaves like Web Workers. On Firefox, Chrome, and Safari
383 // at least, postMessage on Workers does not provide the origin or source. 372 // at least, postMessage on Workers does not provide the origin or source.
384 // TODO(dmichael): Add origin if we change to a more iframe-like origin 373 // TODO(dmichael): Add origin if we change to a more iframe-like origin
385 // policy (see crbug.com/81537) 374 // policy (see crbug.com/81537)
375 WebDOMMessageEvent msg_event(message_data);
386 container->element().dispatchEvent(msg_event); 376 container->element().dispatchEvent(msg_event);
387 } 377 }
388 378
389 PluginObject* MessageChannel::GetPluginObject(v8::Isolate* isolate) { 379 PluginObject* MessageChannel::GetPluginObject(v8::Isolate* isolate) {
390 return PluginObject::FromV8Object(isolate, 380 return PluginObject::FromV8Object(isolate,
391 v8::Local<v8::Object>::New(isolate, passthrough_object_)); 381 v8::Local<v8::Object>::New(isolate, passthrough_object_));
392 } 382 }
393 383
394 void MessageChannel::EnqueuePluginMessage(v8::Local<v8::Value> v8_value) { 384 void MessageChannel::EnqueuePluginMessage(v8::Local<v8::Value> v8_value) {
395 plugin_message_queue_.push_back(VarConversionResult()); 385 plugin_message_queue_.push_back(VarConversionResult());
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 v8::Local<v8::FunctionTemplate> function_template = template_cache_.Get(name); 468 v8::Local<v8::FunctionTemplate> function_template = template_cache_.Get(name);
479 if (!function_template.IsEmpty()) 469 if (!function_template.IsEmpty())
480 return function_template; 470 return function_template;
481 function_template = gin::CreateFunctionTemplate( 471 function_template = gin::CreateFunctionTemplate(
482 isolate, base::Bind(memberFuncPtr, weak_ptr_factory_.GetWeakPtr())); 472 isolate, base::Bind(memberFuncPtr, weak_ptr_factory_.GetWeakPtr()));
483 template_cache_.Set(name, function_template); 473 template_cache_.Set(name, function_template);
484 return function_template; 474 return function_template;
485 } 475 }
486 476
487 } // namespace content 477 } // namespace content
OLDNEW
« no previous file with comments | « components/plugins/renderer/loadable_plugin_placeholder.cc ('k') | content/renderer/render_frame_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698