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

Side by Side Diff: content/renderer/browser_plugin/browser_plugin_bindings.cc

Issue 11368071: browser-plugin: Remove event handling code, and use CustomEvents in webkit instead. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: tot-merge Created 8 years, 1 month 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
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/browser_plugin/browser_plugin_bindings.h" 5 #include "content/renderer/browser_plugin/browser_plugin_bindings.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 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 const NPVariant* args, 352 const NPVariant* args,
353 NPVariant* result) = 0; 353 NPVariant* result) = 0;
354 354
355 private: 355 private:
356 std::string name_; 356 std::string name_;
357 uint32 arg_count_; 357 uint32 arg_count_;
358 358
359 DISALLOW_COPY_AND_ASSIGN(BrowserPluginMethodBinding); 359 DISALLOW_COPY_AND_ASSIGN(BrowserPluginMethodBinding);
360 }; 360 };
361 361
362 class BrowserPluginBindingAddListener : public BrowserPluginMethodBinding {
363 public:
364 BrowserPluginBindingAddListener()
365 : BrowserPluginMethodBinding(kAddEventListener, 2) {
366 }
367
368 virtual bool Invoke(BrowserPluginBindings* bindings,
369 const NPVariant* args,
370 NPVariant* result) OVERRIDE {
371 std::string event_name = StringFromNPVariant(args[0]);
372 if (event_name.empty())
373 return false;
374
375 v8::Local<v8::Value> value =
376 v8::Local<v8::Value>::New(WebBindings::toV8Value(&args[1]));
377 if (value.IsEmpty() || !value->IsFunction())
378 return false;
379
380 v8::Local<v8::Function> function = v8::Local<v8::Function>::Cast(value);
381 BOOLEAN_TO_NPVARIANT(
382 bindings->instance()->AddEventListener(event_name, function), *result);
383 return true;
384 }
385
386 private:
387 DISALLOW_COPY_AND_ASSIGN(BrowserPluginBindingAddListener);
388 };
389
390 class BrowserPluginBindingBack : public BrowserPluginMethodBinding { 362 class BrowserPluginBindingBack : public BrowserPluginMethodBinding {
391 public: 363 public:
392 BrowserPluginBindingBack() 364 BrowserPluginBindingBack()
393 : BrowserPluginMethodBinding(kBackMethod, 0) { 365 : BrowserPluginMethodBinding(kBackMethod, 0) {
394 } 366 }
395 367
396 virtual bool Invoke(BrowserPluginBindings* bindings, 368 virtual bool Invoke(BrowserPluginBindings* bindings,
397 const NPVariant* args, 369 const NPVariant* args,
398 NPVariant* result) OVERRIDE { 370 NPVariant* result) OVERRIDE {
399 bindings->instance()->Back(); 371 bindings->instance()->Back();
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 const NPVariant* args, 472 const NPVariant* args,
501 NPVariant* result) OVERRIDE { 473 NPVariant* result) OVERRIDE {
502 bindings->instance()->Reload(); 474 bindings->instance()->Reload();
503 return true; 475 return true;
504 } 476 }
505 477
506 private: 478 private:
507 DISALLOW_COPY_AND_ASSIGN(BrowserPluginBindingReload); 479 DISALLOW_COPY_AND_ASSIGN(BrowserPluginBindingReload);
508 }; 480 };
509 481
510 class BrowserPluginBindingRemoveListener : public BrowserPluginMethodBinding {
511 public:
512 BrowserPluginBindingRemoveListener()
513 : BrowserPluginMethodBinding(kRemoveEventListener, 2) {
514 }
515
516 virtual bool Invoke(BrowserPluginBindings* bindings,
517 const NPVariant* args,
518 NPVariant* result) OVERRIDE {
519 std::string event_name = StringFromNPVariant(args[0]);
520 if (event_name.empty())
521 return false;
522
523 v8::Local<v8::Value> value =
524 v8::Local<v8::Value>::New(WebBindings::toV8Value(&args[1]));
525
526 if (value.IsEmpty() || !value->IsFunction())
527 return false;
528
529 v8::Local<v8::Function> function = v8::Local<v8::Function>::Cast(value);
530 BOOLEAN_TO_NPVARIANT(
531 bindings->instance()->RemoveEventListener(event_name, function),
532 *result);
533 return true;
534 }
535
536 private:
537 DISALLOW_COPY_AND_ASSIGN(BrowserPluginBindingRemoveListener);
538 };
539
540 class BrowserPluginBindingStop : public BrowserPluginMethodBinding { 482 class BrowserPluginBindingStop : public BrowserPluginMethodBinding {
541 public: 483 public:
542 BrowserPluginBindingStop() 484 BrowserPluginBindingStop()
543 : BrowserPluginMethodBinding(kStopMethod, 0) { 485 : BrowserPluginMethodBinding(kStopMethod, 0) {
544 } 486 }
545 487
546 virtual bool Invoke(BrowserPluginBindings* bindings, 488 virtual bool Invoke(BrowserPluginBindings* bindings,
547 const NPVariant* args, 489 const NPVariant* args,
548 NPVariant* result) OVERRIDE { 490 NPVariant* result) OVERRIDE {
549 bindings->instance()->Stop(); 491 bindings->instance()->Stop();
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 523
582 BrowserPluginBindings::BrowserPluginBindings(BrowserPlugin* instance) 524 BrowserPluginBindings::BrowserPluginBindings(BrowserPlugin* instance)
583 : instance_(instance), 525 : instance_(instance),
584 np_object_(NULL), 526 np_object_(NULL),
585 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { 527 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) {
586 NPObject* obj = 528 NPObject* obj =
587 WebBindings::createObject(NULL, &browser_plugin_message_class); 529 WebBindings::createObject(NULL, &browser_plugin_message_class);
588 np_object_ = static_cast<BrowserPluginBindings::BrowserPluginNPObject*>(obj); 530 np_object_ = static_cast<BrowserPluginBindings::BrowserPluginNPObject*>(obj);
589 np_object_->message_channel = weak_ptr_factory_.GetWeakPtr(); 531 np_object_->message_channel = weak_ptr_factory_.GetWeakPtr();
590 532
591 method_bindings_.push_back(new BrowserPluginBindingAddListener);
592 method_bindings_.push_back(new BrowserPluginBindingBack); 533 method_bindings_.push_back(new BrowserPluginBindingBack);
593 method_bindings_.push_back(new BrowserPluginBindingCanGoBack); 534 method_bindings_.push_back(new BrowserPluginBindingCanGoBack);
594 method_bindings_.push_back(new BrowserPluginBindingCanGoForward); 535 method_bindings_.push_back(new BrowserPluginBindingCanGoForward);
595 method_bindings_.push_back(new BrowserPluginBindingForward); 536 method_bindings_.push_back(new BrowserPluginBindingForward);
596 method_bindings_.push_back(new BrowserPluginBindingGetProcessID); 537 method_bindings_.push_back(new BrowserPluginBindingGetProcessID);
597 method_bindings_.push_back(new BrowserPluginBindingGo); 538 method_bindings_.push_back(new BrowserPluginBindingGo);
598 method_bindings_.push_back(new BrowserPluginBindingReload); 539 method_bindings_.push_back(new BrowserPluginBindingReload);
599 method_bindings_.push_back(new BrowserPluginBindingRemoveListener);
600 method_bindings_.push_back(new BrowserPluginBindingStop); 540 method_bindings_.push_back(new BrowserPluginBindingStop);
601 method_bindings_.push_back(new BrowserPluginBindingTerminate); 541 method_bindings_.push_back(new BrowserPluginBindingTerminate);
602 } 542 }
603 543
604 BrowserPluginBindings::~BrowserPluginBindings() { 544 BrowserPluginBindings::~BrowserPluginBindings() {
605 WebBindings::releaseObject(np_object_); 545 WebBindings::releaseObject(np_object_);
606 } 546 }
607 547
608 bool BrowserPluginBindings::HasMethod(NPIdentifier name) const { 548 bool BrowserPluginBindings::HasMethod(NPIdentifier name) const {
609 for (BindingList::const_iterator iter = method_bindings_.begin(); 549 for (BindingList::const_iterator iter = method_bindings_.begin();
(...skipping 12 matching lines...) Expand all
622 for (BindingList::iterator iter = method_bindings_.begin(); 562 for (BindingList::iterator iter = method_bindings_.begin();
623 iter != method_bindings_.end(); 563 iter != method_bindings_.end();
624 ++iter) { 564 ++iter) {
625 if ((*iter)->MatchesName(name) && (*iter)->arg_count() == arg_count) 565 if ((*iter)->MatchesName(name) && (*iter)->arg_count() == arg_count)
626 return (*iter)->Invoke(this, args, result); 566 return (*iter)->Invoke(this, args, result);
627 } 567 }
628 return false; 568 return false;
629 } 569 }
630 570
631 } // namespace content 571 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698