OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/common/npobject_stub.h" | 5 #include "content/common/npobject_stub.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "content/common/np_channel_base.h" | 8 #include "content/common/np_channel_base.h" |
9 #include "content/common/npobject_util.h" | 9 #include "content/common/npobject_util.h" |
10 #include "content/common/plugin_messages.h" | 10 #include "content/common/plugin_messages.h" |
(...skipping 19 matching lines...) Expand all Loading... |
30 page_url_(page_url) { | 30 page_url_(page_url) { |
31 channel_->AddMappingForNPObjectStub(route_id, npobject); | 31 channel_->AddMappingForNPObjectStub(route_id, npobject); |
32 channel_->AddRoute(route_id, this, this); | 32 channel_->AddRoute(route_id, this, this); |
33 | 33 |
34 // We retain the object just as PluginHost does if everything was in-process. | 34 // We retain the object just as PluginHost does if everything was in-process. |
35 WebBindings::retainObject(npobject_); | 35 WebBindings::retainObject(npobject_); |
36 } | 36 } |
37 | 37 |
38 NPObjectStub::~NPObjectStub() { | 38 NPObjectStub::~NPObjectStub() { |
39 channel_->RemoveRoute(route_id_); | 39 channel_->RemoveRoute(route_id_); |
40 CHECK(!npobject_); | 40 DCHECK(!npobject_); |
41 } | 41 } |
42 | 42 |
43 void NPObjectStub::DeleteSoon() { | 43 void NPObjectStub::DeleteSoon() { |
44 if (npobject_) { | 44 if (npobject_) { |
45 channel_->RemoveMappingForNPObjectStub(route_id_, npobject_); | 45 channel_->RemoveMappingForNPObjectStub(route_id_, npobject_); |
46 | 46 |
47 // We need to NULL npobject_ prior to calling releaseObject() to avoid | 47 // We need to NULL npobject_ prior to calling releaseObject() to avoid |
48 // problems with re-entrancy. See http://crbug.com/94179#c17 for more | 48 // problems with re-entrancy. See http://crbug.com/94179#c17 for more |
49 // details on how this can happen. | 49 // details on how this can happen. |
50 NPObject* npobject = npobject_; | 50 NPObject* npobject = npobject_; |
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
388 | 388 |
389 bool return_value = WebBindings::evaluateHelper(0, popups_allowed, npobject_, | 389 bool return_value = WebBindings::evaluateHelper(0, popups_allowed, npobject_, |
390 &script_string, &result_var); | 390 &script_string, &result_var); |
391 | 391 |
392 NPVariant_Param result_param; | 392 NPVariant_Param result_param; |
393 CreateNPVariantParam( | 393 CreateNPVariantParam( |
394 result_var, channel_, &result_param, true, containing_window_, page_url_); | 394 result_var, channel_, &result_param, true, containing_window_, page_url_); |
395 NPObjectMsg_Evaluate::WriteReplyParams(reply_msg, result_param, return_value); | 395 NPObjectMsg_Evaluate::WriteReplyParams(reply_msg, result_param, return_value); |
396 channel_->Send(reply_msg); | 396 channel_->Send(reply_msg); |
397 } | 397 } |
OLD | NEW |