diff options
author | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-02 16:00:12 +0000 |
---|---|---|
committer | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-02 16:00:12 +0000 |
commit | 4d849c6b297552740bb6ec648af4778391cc8588 (patch) | |
tree | a162bdc90bb6e0e0fdcdd787499c33e8c5b97771 /webkit/glue/plugins/pepper_var.cc | |
parent | e3ef18d3b88e805535c09a8f7cf7d69e0ef4c391 (diff) | |
download | chromium_src-4d849c6b297552740bb6ec648af4778391cc8588.zip chromium_src-4d849c6b297552740bb6ec648af4778391cc8588.tar.gz chromium_src-4d849c6b297552740bb6ec648af4778391cc8588.tar.bz2 |
Unrevert 58354, reland PPAPI with the instance test disabled.
Review URL: http://codereview.chromium.org/3323005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@58358 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue/plugins/pepper_var.cc')
-rw-r--r-- | webkit/glue/plugins/pepper_var.cc | 103 |
1 files changed, 47 insertions, 56 deletions
diff --git a/webkit/glue/plugins/pepper_var.cc b/webkit/glue/plugins/pepper_var.cc index e578523..f34ac6d 100644 --- a/webkit/glue/plugins/pepper_var.cc +++ b/webkit/glue/plugins/pepper_var.cc @@ -24,38 +24,6 @@ namespace { void Release(PP_Var var); PP_Var VarFromUtf8(const char* data, uint32_t len); -// --------------------------------------------------------------------------- -// Exceptions - -class TryCatch { - public: - TryCatch(PP_Var* exception) : exception_(exception) { - WebBindings::pushExceptionHandler(&TryCatch::Catch, this); - } - - ~TryCatch() { - WebBindings::popExceptionHandler(); - } - - bool HasException() const { - return exception_ && exception_->type != PP_VARTYPE_VOID; - } - - void SetException(const char* message) { - DCHECK(!HasException()); - if (exception_) - *exception_ = VarFromUtf8(message, strlen(message)); - } - - private: - static void Catch(void* self, const NPUTF8* message) { - static_cast<TryCatch*>(self)->SetException(message); - } - - // May be null if the consumer isn't interesting in catching exceptions. - PP_Var* exception_; -}; - const char kInvalidObjectException[] = "Error: Invalid object"; const char kInvalidPropertyException[] = "Error: Invalid property"; const char kUnableToGetPropertyException[] = "Error: Unable to get property"; @@ -78,30 +46,6 @@ NPObject* GetNPObjectUnchecked(PP_Var var) { return reinterpret_cast<NPObject*>(var.value.as_id); } -// Returns a PP_Var that corresponds to the given NPVariant. The contents of -// the NPVariant will be copied unless the NPVariant corresponds to an object. -PP_Var NPVariantToPPVar(const NPVariant* variant) { - switch (variant->type) { - case NPVariantType_Void: - return PP_MakeVoid(); - case NPVariantType_Null: - return PP_MakeNull(); - case NPVariantType_Bool: - return PP_MakeBool(NPVARIANT_TO_BOOLEAN(*variant)); - case NPVariantType_Int32: - return PP_MakeInt32(NPVARIANT_TO_INT32(*variant)); - case NPVariantType_Double: - return PP_MakeDouble(NPVARIANT_TO_DOUBLE(*variant)); - case NPVariantType_String: - return VarFromUtf8(NPVARIANT_TO_STRING(*variant).UTF8Characters, - NPVARIANT_TO_STRING(*variant).UTF8Length); - case NPVariantType_Object: - return NPObjectToPPVar(NPVARIANT_TO_OBJECT(*variant)); - } - NOTREACHED(); - return PP_MakeVoid(); -} - // Returns a NPVariant that corresponds to the given PP_Var. The contents of // the PP_Var will be copied unless the PP_Var corresponds to an object. NPVariant PPVarToNPVariant(PP_Var var) { @@ -845,6 +789,29 @@ PP_Var NPObjectToPPVar(NPObject* object) { return ret; } +PP_Var NPVariantToPPVar(const NPVariant* variant) { + switch (variant->type) { + case NPVariantType_Void: + return PP_MakeVoid(); + case NPVariantType_Null: + return PP_MakeNull(); + case NPVariantType_Bool: + return PP_MakeBool(NPVARIANT_TO_BOOLEAN(*variant)); + case NPVariantType_Int32: + return PP_MakeInt32(NPVARIANT_TO_INT32(*variant)); + case NPVariantType_Double: + return PP_MakeDouble(NPVARIANT_TO_DOUBLE(*variant)); + case NPVariantType_String: + return VarFromUtf8(NPVARIANT_TO_STRING(*variant).UTF8Characters, + NPVARIANT_TO_STRING(*variant).UTF8Length); + case NPVariantType_Object: + return NPObjectToPPVar(NPVARIANT_TO_OBJECT(*variant)); + } + NOTREACHED(); + return PP_MakeVoid(); +} + + NPObject* GetNPObject(PP_Var var) { if (var.type != PP_VARTYPE_OBJECT) return NULL; @@ -862,4 +829,28 @@ String* GetString(PP_Var var) { return GetStringUnchecked(var); } +TryCatch::TryCatch(PP_Var* exception) : exception_(exception) { + WebBindings::pushExceptionHandler(&TryCatch::Catch, this); +} + +TryCatch::~TryCatch() { + WebBindings::popExceptionHandler(); +} + +bool TryCatch::HasException() const { + return exception_ && exception_->type != PP_VARTYPE_VOID; +} + +void TryCatch::SetException(const char* message) { + DCHECK(!HasException()); + if (exception_) + *exception_ = VarFromUtf8(message, strlen(message)); +} + +// static +void TryCatch::Catch(void* self, const char* message) { + static_cast<TryCatch*>(self)->SetException(message); +} + + } // namespace pepper |