Commit 4c929f39 authored by dmichael's avatar dmichael Committed by Commit bot

Make PepperTryCatch hold a reference on PepperPluginInstanceImpl

BUG=416311

Review URL: https://codereview.chromium.org/596523002

Cr-Commit-Position: refs/heads/master@{#296055}
parent fcb5f753
...@@ -19,6 +19,8 @@ class PepperPluginInstanceImpl; ...@@ -19,6 +19,8 @@ class PepperPluginInstanceImpl;
// Base class for scripting TryCatch helpers. // Base class for scripting TryCatch helpers.
class CONTENT_EXPORT PepperTryCatch { class CONTENT_EXPORT PepperTryCatch {
public: public:
// PepperTryCatch objects should only be used as stack variables. This object
// takes a reference on the given PepperPluginInstanceImpl.
PepperTryCatch(PepperPluginInstanceImpl* instance, PepperTryCatch(PepperPluginInstanceImpl* instance,
V8VarConverter::AllowObjectVars convert_objects); V8VarConverter::AllowObjectVars convert_objects);
virtual ~PepperTryCatch(); virtual ~PepperTryCatch();
...@@ -34,7 +36,14 @@ class CONTENT_EXPORT PepperTryCatch { ...@@ -34,7 +36,14 @@ class CONTENT_EXPORT PepperTryCatch {
ppapi::ScopedPPVar FromV8(v8::Handle<v8::Value> v8_value); ppapi::ScopedPPVar FromV8(v8::Handle<v8::Value> v8_value);
protected: protected:
PepperPluginInstanceImpl* instance_; // Make sure that |instance_| is alive for the lifetime of PepperTryCatch.
// PepperTryCatch is used mostly in Pepper scripting code, where it can be
// possible to enter JavaScript synchronously which can cause the plugin to
// be deleted.
//
// Note that PepperTryCatch objects should only ever be on the stack, so this
// shouldn't keep the instance around for too long.
scoped_refptr<PepperPluginInstanceImpl> instance_;
// Whether To/FromV8 should convert object vars. If set to // Whether To/FromV8 should convert object vars. If set to
// kDisallowObjectVars, an exception should be set if they are encountered // kDisallowObjectVars, an exception should be set if they are encountered
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment